public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: Add loaded module base address list to stackdump
@ 2022-10-29 17:34 Jon TURNEY
  0 siblings, 0 replies; only message in thread
From: Jon TURNEY @ 2022-10-29 17:34 UTC (permalink / raw)
  To: cygwin-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=9b89811c9fc0cc859c8d43a5a162e5fe8cc1ff2c

commit 9b89811c9fc0cc859c8d43a5a162e5fe8cc1ff2c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Oct 28 13:35:13 2022 +0100

    Cygwin: Add loaded module base address list to stackdump
    
    This adds an extra section to the stackdump, which lists the loaded
    modules and their base address.  This is perhaps useful as it makes it
    immediately clear if RandomCrashInjectedDll.dll is loaded...
    
    Future work: It seems like the 'InMemoryOrder' part of
    'InMemoryOrderModuleList' is a lie?
    
    > Loaded modules
    > 000100400000 segv-test.exe
    > 7FFF2AC30000 ntdll.dll
    > 7FFF29050000 KERNEL32.DLL
    > 7FFF28800000 KERNELBASE.dll
    > 000180040000 cygwin1.dll
    > 7FFF28FA0000 advapi32.dll
    > 7FFF29F20000 msvcrt.dll
    > 7FFF299E0000 sechost.dll
    > 7FFF29B30000 RPCRT4.dll
    > 7FFF27C10000 CRYPTBASE.DLL
    > 7FFF28770000 bcryptPrimitives.dll

Diff:
---
 winsup/cygwin/exceptions.cc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 1e9ea26bf..8cc454c90 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -383,6 +383,16 @@ cygwin_exception::dumpstack ()
       small_printf ("End of stack trace%s\r\n",
 		    i == DUMPSTACK_FRAME_LIMIT ?
 		    " (more stack frames may be present)" : "");
+
+      small_printf ("Loaded modules:\r\n");
+      PLIST_ENTRY head = &NtCurrentTeb()->Peb->Ldr->InMemoryOrderModuleList;
+      for (PLIST_ENTRY x = head->Flink; x != head; x = x->Flink)
+	{
+	  PLDR_DATA_TABLE_ENTRY mod = CONTAINING_RECORD (x, LDR_DATA_TABLE_ENTRY,
+							 InMemoryOrderLinks);
+	  small_printf ("%012X %S\r\n", mod->DllBase, &mod->BaseDllName);
+	}
+
       if (h)
 	NtClose (h);
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-29 17:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-29 17:34 [newlib-cygwin] Cygwin: Add loaded module base address list to stackdump Jon TURNEY

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).