|
From: Christian P. <tr...@ge...> - 2005-08-13 05:24:13
|
On Saturday 13 August 2005 02:06, Christian Parpart wrote: > On Friday 12 August 2005 14:36, you wrote: [....] > > You could try accessing the raw pointer prior to deleting it to see if > > it has already been deleted, and by whom. > > I am on it... (and will give a notice when I got fixed that *****) Oh dear, I got it, after 3 whol(y) days of debugging; well, I really like=20 valgrind, and it helped me alot, however, it was still a mess in finding th= at=20 one :) As said, this server is loading pluggable modules on startup to be extended= as=20 admin whishes; the modules can register hooks to get notified about certain= =20 events (user logins in/out, virtual community spawns/unspawns, etc.) and th= at=20 module did not unregister itself from all those hooks; though, when the=20 server itself has unloaded the module and wants to shutdown itself it wants= =20 to flush out the hook-tables and (undoubtly) accesses some part of method's= =20 address being part of this already unloaded/dlclose()d module and SEGVAULTs; Now, as I finally know that it was a function address it could not "read" i= n=20 that "Invalid read" it would be nice when valgrind (some day) could speed u= p=20 a debugger's day by telling him that this certain address points to a symbo= l=20 (of name _foo) that's not anylonger reachable; Having had _this_ notice it= =20 would have taken up to a few minutes at most to locate and fix the bug; p.s.: so yes, it's been something statically from that .so - but a method=20 instead of the suggested global var :) Thanks ALL for your hints, Christian Parpart. =2D-=20 07:16:21 up 142 days, 20:24, 0 users, load average: 1.19, 1.15, 0.97 |