Index: dll_init.cc =================================================================== RCS file: /cvs/src/src/winsup/cygwin/dll_init.cc,v retrieving revision 1.32 diff -u -p -r1.32 dll_init.cc --- dll_init.cc 2 Nov 2002 03:31:15 -0000 1.32 +++ dll_init.cc 7 Nov 2002 16:11:14 -0000 @@ -187,6 +187,15 @@ dll_list::detach (dll *d) if (!myself || myself->process_state == PID_EXITED) return; + if (IsBadReadPtr (d, sizeof (dll))) + { + system_printf ("JLT: skipping bad d = %p", d); + return; + } + + system_printf ("JLT: myself->process_state = %lx", myself->process_state); + system_printf ("JLT: d = %p", d); + if (d->count <= 0) system_printf ("WARNING: try to detach an already detached dll ..."); else if (--d->count == 0) @@ -199,8 +208,14 @@ dll_list::detach (dll *d) loaded_dlls--; if (end == d) end = d->prev; + + system_printf ("JLT: VirtualFree(d = %p, d->name = %s)", d, d->name); + system_printf ("JLT: loaded_dlls = %d", loaded_dlls); + VirtualFree (d, 0, MEM_RELEASE); } + else + system_printf ("JLT: --d->count, d = %p, count = %d", d, d->count); } /* Initialization for all linked DLLs, called by dll_crt0_1. */