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...

Reply via email to