Raphael Manfredi wrote: > Quoting Bill Pringlemeir <[EMAIL PROTECTED]> from ml.softs.gtk-gnutella.devel: > :I am not quite capable of solving this one. The DHT lookup seems to > :have timed out, but the original lookup has been freed already. If we > :do an n-lookup and any of one the lookup succeeds, is the look up > :freed and then some latent lookup comes in with a timeout? I think > :that is the condition; very tricky. > > I think the "lookup_value_delay(nl);" call should be enclosed in an else {} > block related to the if() above. > > Can you double check your logs to see you have a > > "aborting secondary key fetch..." > > trace before the crash? (provided you had dht_lookup_debug set to a level > greater than 1). > > Still, looking at the code quickly, I believe the else {} block is missing.
I don't see what lookup_is_alive() is good for. It is not valid C if the pointer actually references a freed object as per C standard section 6.2.4. If you want to use weak references, look at core/nodes.c and "node_id". You have to use numeric IDs, not pointers to track objects beyond their life-cycle. -- Christian ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gtk-gnutella-devel mailing list gtk-gnutella-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel