On Tue, Sep 01, 2009 at 05:42:51PM -0400, Dominique Brazziel wrote:
> >From gdb run with one of the identical core dumps:
>
> gdb /usr/lib/iceweasel/firefox-bin ./core.firefox-bin.32265
>
> <*snip*>
>
> #0 0xb7cc8d91 in *__GI_getenv (name=0xb7ef4642 "DSP_DEBUG") at
> getenv.c:90
> 90 getenv.c: No such file or directory.
> in getenv.c
> (gdb) where
> #0 0xb7cc8d91 in *__GI_getenv (name=0xb7ef4642 "DSP_DEBUG") at
> getenv.c:90
> #1 0xb7eef0e0 in ?? () from /usr/lib/libpulsedsp.so
> #2 0xb7ef2e89 in close () from /usr/lib/libpulsedsp.so
> #3 0xb5cbf746 in ?? () from /usr/lib/libORBit-2.so.0
> #4 0xb5cbfc3f in ?? () from /usr/lib/libORBit-2.so.0
> #5 0xb5cbffc2 in link_connection_state_changed ()
> from /usr/lib/libORBit-2.so.0
> #6 0xb5cc01dd in link_connection_exec_disconnect ()
> from /usr/lib/libORBit-2.so.0
> #7 0xb5cbea4c in ?? () from /usr/lib/libORBit-2.so.0
> #8 0xb5cbed37 in link_exec_command () from /usr/lib/libORBit-2.so.0
> #9 0xb5cbf961 in link_connection_disconnect ()
> from /usr/lib/libORBit-2.so.0
> #10 0xb5c9d176 in giop_connection_close () from /usr/lib/libORBit-2.so.0
> #11 0xb5c9d20a in ?? () from /usr/lib/libORBit-2.so.0
> #12 0xb698211f in g_object_run_dispose ()
> from /usr/lib/libgobject-2.0.so.0
> #13 0xb5cbf17a in link_connections_close ()
> from /usr/lib/libORBit-2.so.0
> #14 0xb5c9d857 in giop_shutdown () from /usr/lib/libORBit-2.so.0
> #15 0xb5ca23c9 in CORBA_ORB_shutdown () from /usr/lib/libORBit-2.so.0
> #16 0xb5ca252f in CORBA_ORB_destroy () from /usr/lib/libORBit-2.so.0
> #17 0xb5ca3cbf in ?? () from /usr/lib/libORBit-2.so.0
> #18 0xb7cc9589 in *__GI_exit (status=154756776) at exit.c:75
> #19 0xb7caf7ad in __libc_start_main (main=0x8048d62 <set...@plt+246>,
> argc=5, ubp_av=0xbfb285f4, init=0x804dae0 <set...@plt+20084>,
> fini=0x804dad0 <set...@plt+20068>, rtld_fini=0xb7f1a6e0 <_dl_fini>,
> stack_end=0xbfb285ec) at libc-start.c:254
>
> Looking at the code (padsp.c), it seems like this should only happen
> if the DSP_DEBUG value is not set but the check for non-null
> pointer passes:
>
> static void debug(int level, const char *format, ...) {
> va_list ap;
> const char *dlevel_s;
> int dlevel;
>
> dlevel_s = getenv("PADSP_DEBUG");
> if (!dlevel_s)
> return;
>
> dlevel = atoi(dlevel_s); <== Segfault if pointer 'dlevel_s' is NULL
>
> Or is the segfault occuring in the getenv call? So many levels of
> indirection, exec'ing, environments, my head starts to spin...
It looks like it is happening in the getenv call. In getenv.c, line 90.
Mike
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]