[OpenSIPS-Devel] [ opensips-Bugs-2936343 ] 'opensipsctl fifo get_statistics all' crashes opensips

SourceForge.net noreply at sourceforge.net
Fri Jan 22 17:48:46 CET 2010


Bugs item #2936343, was opened at 2010-01-21 15:51
Message generated for change (Comment added) made by bogdan_iancu
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=1086410&aid=2936343&group_id=232389

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: 1.6.x
>Status: Closed
>Resolution: Fixed
Priority: 5
Private: No
Submitted By: Alex Massover (cupotka2008)
Assigned to: Bogdan-Andrei Iancu (bogdan_iancu)
Summary: 'opensipsctl fifo get_statistics all' crashes opensips

Initial Comment:
Hi!

'opensipsctl fifo get_statistics all' always crashes opensips. Core is somehow not produced.
Always reproducible for me on 1.6.1.

Here's a strace of parent process:

Process 9509 attached - interrupt to quit
pause()                                 = ? ERESTARTNOHAND (To be restarted)
--- SIGUSR2 (User defined signal 2) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
pause()                                 = ? ERESTARTNOHAND (To be restarted)
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
waitpid(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGUSR2}], WNOHANG) = 9520
waitpid(-1, 0xbf84b4c8, WNOHANG)        = 0
kill(0, SIGTERM)                        = 0
--- SIGTERM (Terminated) @ 0 (0) ---
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [TERM])
sigreturn()                             = ? (mask now [])
rt_sigaction(SIGALRM, {0x8065920, [ALRM], SA_RESTART}, {SIG_DFL}, 8) = 0
alarm(60)                               = 0
wait4(-1, NULL, 0, NULL)                = 9514
wait4(-1, NULL, 0, NULL)                = 9519
wait4(-1, NULL, 0, NULL)                = 9521
wait4(-1, NULL, 0, NULL)                = 9522
wait4(-1, NULL, 0, NULL)                = 9512
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
wait4(-1, NULL, 0, NULL)                = 9510
wait4(-1, NULL, 0, NULL)                = 9516
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
wait4(-1, NULL, 0, NULL)                = 9515
wait4(-1, NULL, 0, NULL)                = 9517
wait4(-1, NULL, 0, NULL)                = 9524
wait4(-1, NULL, 0, NULL)                = 9525
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
--- SIGCHLD (Child exited) @ 0 (0) ---
sigreturn()                             = ? (mask now [])
wait4(-1, NULL, 0, NULL)                = 9511
wait4(-1, NULL, 0, NULL)                = 9513
wait4(-1, NULL, 0, NULL)                = 9518
wait4(-1, NULL, 0, NULL)                = 9523
wait4(-1, NULL, 0, NULL)                = -1 ECHILD (No child processes)
rt_sigaction(SIGALRM, {0x8066080, [ALRM], SA_RESTART}, {0x8065920, [ALRM], SA_RESTART}, 8) = 0 stat64("/tmp/opensips_fifo", {st_mode=S_IFIFO|0660, st_size=0, ...}) = 0
unlink("/tmp/opensips_fifo")            = 0
munmap(0xaed25000, 134217728)           = 0
unlink("/var/run/opensips/opensips.pid") = 0
alarm(0)                                = 60
rt_sigaction(SIGALRM, {SIG_IGN}, {0x8066080, [ALRM], SA_RESTART}, 8) = 0
exit_group(0)                           = ?
Process 9509 detached


----------------------------------------------------------------------

>Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2010-01-22 18:48

Message:
Thanks to Richard Revels about the hint on snmp module...Indeed, the bug
was in that module as it was overriding the SIGUSR2 handler which was
installed by core.

Fix is on SVN.

Thanks to all,
Bogdan

----------------------------------------------------------------------

Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2010-01-22 17:35

Message:
Alex, I'm investigating some possibilities....Could you apply the patch I
just uploaded here? Just to see if my suspicion is right. BTW, what modules
are you loading ?

Thanks and regards,
Bogdan

----------------------------------------------------------------------

Comment By: Alex Massover (cupotka2008)
Date: 2010-01-22 16:51

Message:
I just discovered 'fifo ps' command :)

read(7, ":get_statistics:opensips_receiver"..., 4096) = 45
open("/tmp/opensips_receiver_18361", O_WRONLY|O_NONBLOCK) = 10
fstat64(10, {st_mode=S_IFIFO|0666, st_size=0, ...}) = 0
lstat64("/tmp/opensips_receiver_18361", {st_mode=S_IFIFO|0666, st_size=0,
...}) = 0
fcntl64(10, F_GETFL)                    = 0x801 (flags
O_WRONLY|O_NONBLOCK)
fcntl64(10, F_SETFL, O_WRONLY)          = 0
fcntl64(10, F_GETFL)                    = 0x1 (flags O_WRONLY)
fstat64(10, {st_mode=S_IFIFO|0666, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0xb7252000
_llseek(10, 0, 0xbfd1c5d8, SEEK_CUR)    = -1 ESPIPE (Illegal seek)
open("/proc/net/udp", O_RDONLY)         = 11
fstat64(11, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0xb7251000
read(11, "  sl  local_address rem_address  "..., 1024) = 1024
read(11, "  67: 0100007F:0035 00000000:0000"..., 1024) = 640
read(11, ""..., 1024)                   = 0
close(11)                               = 0
munmap(0xb7251000, 4096)                = 0
time(NULL)                              = 1264171687
kill(17997, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(17998, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(17999, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(18000, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(18001, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(18002, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(18003, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
time(NULL)                              = 1264171687
kill(18004, SIGUSR2)                    = 0
nanosleep({0, 20000}, NULL)             = 0
--- SIGTERM (Terminated) @ 0 (0) ---
exit_group(0)                           = ?
Process 18009 detached


----------------------------------------------------------------------

Comment By: Alex Massover (cupotka2008)
Date: 2010-01-21 20:38

Message:
Hi!

I use fifo.
Is there any intelligent way to recognize which process do FIFO? Or only
stracing all of them?

(On Sunday I back to work and will bring the strace.)

BR,
Alex.

----------------------------------------------------------------------

Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2010-01-21 19:51

Message:
Hi Alex,

The strace of the main proc is irrelevant here - what is important is the
bt or strace of the FIFO/xmlrpc process. BTW, what MI backend do you use ?

Regards,
Bogdan

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=1086410&aid=2936343&group_id=232389



More information about the Devel mailing list