Yesterday it happened again, exactly the same pattern: Reading symbols from ./build-tree/fam-2.7.0/src/famd...done. [New LWP 18773] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `/usr/sbin/famd -v -f -T 0'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 0x00000000004128e7 in TCP_Client::unblock_handler (closure=0x10982a0) at TCP_Client.c++:270 #2 0x00000000004103cc in Scheduler::handle_io (fds=0x1a4dd70, fds@entry=0x7ffce30d7a40, iotype=&Scheduler::FDInfo::read, iotype@entry=&Scheduler::FDInfo::write) at Scheduler.c++:315 #3 0x0000000000410601 in Scheduler::select () at Scheduler.c++:342 #4 0x0000000000402dc5 in loop () at Scheduler.h:89 #5 main (argc=<optimized out>, argv=0x7ffce30d7cb8) at main.c++:306
This confirms the diagnosis. I put a couple of assertions like so: --- src/TCP_Client.c++.orig 2003-01-18 15:18:12.000000000 +0100 +++ src/TCP_Client.c++ 2018-03-15 18:35:24.000000000 +0100 @@ -287,12 +287,14 @@ { if (!to_be_scanned.size()) conn.ready_for_input(false); + assert((*(long **)ip)[4] != 0L); // ip func[4] (scan) not virtual to_be_scanned.insert(ip); } void TCP_Client::dequeue_from_scan(Interest *ip) { + assert((*(long **)ip)[4] != 0L); // ip func[4] (scan) not virtual to_be_scanned.remove(ip); if (!to_be_scanned.size()) conn.ready_for_input(true); While recompiling, I noticed this warning: Listener.o: In function `Listener::create_local_client(TCP_Client&, unsigned int)': fam-2.7.0/build-tree/fam-2.7.0/src/Listener.c++:220: warning: the use of `tempnam' is dangerous, better use `mkstemp' I'm not sure how that is related to this bug, if at all. Waiting for next core dump...