On 2015/02/23 16:15, Philip Guenther wrote:
> On Mon, 23 Feb 2015, Alexey Suslikov wrote:
> ...
> > 12995 asterisk RET fork 0
> > 12995 asterisk CALL
> > sigprocmask(SIG_SETMASK,0x8005003<SIGHUP|SIGINT|SIGPIPE|SIGTERM|SIGWINCH>)
> > 12995 asterisk RET sigprocmask ~0x10100<SIGKILL|SIGSTOP>
> > 12995 asterisk CALL getthrid()
> > 12995 asterisk RET getthrid 1012995/0xf7503
> > 12995 asterisk PSIG SIGSEGV SIG_DFL code SEGV_MAPERR<1>
> > addr=0x181489355e40 trapno=6
>
> So it's not even getting to ast_set_priority() or ast_close_fds_above_n().
>
> <pause>
>
> Ooog, this is probably caused by a pthread_atfork() handler from a shared
> object.
>
> The easiest way to test this hypothesis is to change this code:
> #ifdef HAVE_WORKING_FORK
> pid = fork();
> #else
> pid = vfork();
> #endif
>
> to just
> pid = vfork();
>
>
> and see if the problem goes away...
Yes that gets rid of the "unable to execute" from the system("pwd") call.
(unfortunately the AGI script can't be fixed that way as it needs to not
block the parent).
And, with a syslog added to librthread, I can confirm that something
(but I don't know what) calls pthread_atfork.