On Oct 28 16:05, Jon Turney wrote: > 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... > > XXX: It seems like the 'InMemoryOrder' part of 'InMemoryOrderModuleList' is a > lie?
Probably just an alternative fact... > > > 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 > --- > winsup/cygwin/exceptions.cc | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc > index 1e9ea26bf..7dde44140 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); > } > -- > 2.38.1