Bugs item #1891453, was opened at 2008-02-11 15:43 Message generated for change (Comment added) made by osas You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1891453&group_id=139143
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: ver devel Status: Open Resolution: None Priority: 5 Private: No Submitted By: Ovidiu Sas (osas) Assigned to: Daniel-Constantin Mierla (miconda) Summary: db_text: openser doesn't exit properly if contacts loaded Initial Comment: If expired contacts are present in the db_text database when openser starts up, on exit, openser will hang. How to reproduce the problem? 1. start openser: openserctl start 2. load a contact in the db: openserctl ul add user sip:[EMAIL PROTECTED] 15 3. stop openser: openserctl stop 4. wait more then 15s for the contact to be expired 5. start openser: openserctl start the usrloc module will complain about it: ERROR:usrloc:preload_udomain: load end time [1202768230] 6. stop openser: openserctl stop a ps will show that there are still two openser processes running. I didn't tested this with other data bases, but the result may be the same. Regards, Ovidiu Sas ---------------------------------------------------------------------- >Comment By: Ovidiu Sas (osas) Date: 2008-02-12 11:15 Message: Logged In: YES user_id=1395524 Originator: YES (gdb) bt #0 0x400d3e58 in wait () from /lib/tls/libc.so.6 #1 0x0806225a in handle_sigs () at main.c:460 #2 0x08063bc5 in main_loop () at main.c:864 #3 0x08065708 in main (argc=3, argv=0xbffffd54) at main.c:1318 (gdb) bt #0 fm_status (qm=0x816f900) at mem/f_malloc.c:513 #1 0x08062de2 in sig_usr (signo=15) at main.c:568 #2 <signal handler called> #3 0x40112d5a in recvfrom () from /lib/tls/libc.so.6 #4 0x080b3ef9 in udp_rcv_loop () at udp_server.c:396 #5 0x08063873 in main_loop () at main.c:779 #6 0x08065708 in main (argc=3, argv=0xbffffd54) at main.c:1318 ---------------------------------------------------------------------- Comment By: Daniel-Constantin Mierla (miconda) Date: 2008-02-12 10:58 Message: Logged In: YES user_id=1246013 Originator: NO Can you compile with debugging symbols and send the trace again, to see the line in the code. Other option is that one lock is set when the sig term is issued, and openser blocks when tries to sync back the records to file in the mod destroy function. ---------------------------------------------------------------------- Comment By: Ovidiu Sas (osas) Date: 2008-02-12 10:49 Message: Logged In: YES user_id=1395524 Originator: YES It is not compiled with memory debug, only debug. If I don't have a record in the usrloc, openser exits properly. ---------------------------------------------------------------------- Comment By: Daniel-Constantin Mierla (miconda) Date: 2008-02-12 10:30 Message: Logged In: YES user_id=1246013 Originator: NO OK, it is not related to usrloc or db module. I guess you have it compiled with memory debug and takes quite a while to write the shutdown status. If the memory status is not dumped in 1 min, then openser kills itself with sig 9, and no further cleanup. Perhaps the cleanups for deleting pid, a.s.o, should be done before starting printing the memory status -- I need to check if it is possible. ---------------------------------------------------------------------- Comment By: Ovidiu Sas (osas) Date: 2008-02-12 10:25 Message: Logged In: YES user_id=1395524 Originator: YES After aproximative one minute, the remaining two openser processes exits, but the openser.pid file is not cleared out. ---------------------------------------------------------------------- Comment By: Ovidiu Sas (osas) Date: 2008-02-12 10:16 Message: Logged In: YES user_id=1395524 Originator: YES # ps -aef --forest | grep openser root 7822 1 0 11:53 ? 00:00:00 /usr/local/sbin/openser -P /var/run/openser.pid root 7824 7822 57 11:53 ? 00:00:05 \_ /usr/local/sbin/openser -P /var/run/openser.pid # gdb /usr/local/sbin/openser 7822 (gdb) bt #0 0x400d3e58 in wait () from /lib/tls/libc.so.6 #1 0x0806225a in handle_sigs () #2 0x08063bc5 in main_loop () #3 0x08065708 in main () # gdb /usr/local/sbin/openser 7824 (gdb) bt #0 0x080b7dda in fm_status () #1 0x08062de2 in sig_usr () #2 <signal handler called> #3 0x40112d5a in recvfrom () from /lib/tls/libc.so.6 #4 0x080b3ef9 in udp_rcv_loop () #5 0x08063873 in main_loop () #6 0x08065708 in main () ---------------------------------------------------------------------- Comment By: Daniel-Constantin Mierla (miconda) Date: 2008-02-12 03:48 Message: Logged In: YES user_id=1246013 Originator: NO Please attach with gdb to the running processes and get the backtrace. It will help to see where they hung. ---------------------------------------------------------------------- Comment By: Ovidiu Sas (osas) Date: 2008-02-11 16:03 Message: Logged In: YES user_id=1395524 Originator: YES Actually, even if the contact is not expired, it will hang. If there is a record present in the usrloc table at startup, openser will hang on exit. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=743020&aid=1891453&group_id=139143 _______________________________________________ Devel mailing list Devel@lists.openser.org http://lists.openser.org/cgi-bin/mailman/listinfo/devel