pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: firefox 58.0 "Gah. Your tab just crashed"



> On Fri, Feb 02, 2018 at 10:59:13AM +0100, Havard Eidnes wrote:
>> > On Fri, Feb 02, 2018 at 09:43:55AM +0100, Havard Eidnes wrote:
>> >> This is on amd64/8.0_BETA.  Anyone have any hints how to build
>> >> the package with debug support (or at least symbols?), and what
>> >> it takes in terms of resources to accomplish that?
>> >
>> > The package has a 'debug' option. No ideas about resources.
>> 
>> OK, thanks for the (should have been obvious) hint.  I've started
>> a build (of 58.0.1 this time), so as for resources I guess I'll
>> see.
>
> Usually "debug" is way too much for firefox and gets you more asserts/cores
> than you would want to deal with before it gets to your real problem.
>
> Please see
>
> 	http://wiki.netbsd.org/tutorials/pkgsrc/debugging_firefox/
>
> for better options.

OK, my firefox is now 58.0.1, built with debug-info, installed
without strip, transported to another machine and installed
there.

Of course it doesn't exactly behave the same way...

I did however get one catastrophic crash (not the "tab crashed"
kind), which deciphered as:


% gdb /usr/pkg/lib/firefox/firefox firefox.core 
GNU gdb (GDB) 7.12
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64--netbsd".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/pkg/lib/firefox/firefox...done.
[New process 2]
[New process 30]
[New process 29]
[New process 28]
[New process 27]
[New process 26]
[New process 25]
[New process 22]
[New process 21]
[New process 20]
[New process 18]
[New process 17]
[New process 16]
[New process 15]
[New process 14]
[New process 13]
[New process 12]
[New process 11]
[New process 10]
[New process 9]
[New process 8]
[New process 7]
[New process 6]
[New process 5]
[New process 4]
[New process 3]
[New process 1]
Core was generated by `firefox'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  mozilla::ipc::MessageChannel::OnChannelErrorFromLink (this=0x799c5c92e130)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/glue/MessageChannel.cpp:2548
2548    /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/glue/MessageChannel.cpp: No such file or directory.
[Current thread is 1 (LWP 1)]
(gdb) 
(gdb) where
#0  mozilla::ipc::MessageChannel::OnChannelErrorFromLink (this=0x799c5c92e130)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/glue/MessageChannel.cpp:2548
#1  0x0000799c4a1d4cdd in mozilla::ipc::ProcessLink::OnChannelError (
    this=0x799c5c9a61c0)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/glue/MessageLink.cpp:397
#2  0x0000799c44437975 in ?? () from /usr/lib/libevent.so.4
#3  0x0000799c444382a1 in event_base_loop () from /usr/lib/libevent.so.4
#4  0x0000799c4a1b305d in base::MessagePumpLibevent::Run (this=0x799c5c107140, 
    delegate=0x799c421ffe00)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/message_pump_libevent.cc:383
#5  0x0000799c4a1b73c3 in MessageLoop::RunInternal (this=0x799c421ffdd0)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/message_loop.cc:326
#6  MessageLoop::RunHandler (this=0x799c421ffdd0)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/message_loop.cc:319
#7  MessageLoop::Run (this=this@entry=0x799c421ffe00)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/message_loop.cc:299
#8  0x0000799c4a1c2c80 in base::Thread::ThreadMain (this=0x799c5c92f088)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/thread.cc:181
#9  0x0000799c4a1b2cc8 in ThreadFunc (closure=<optimized out>)
    at /usr/pkgsrc/www/firefox/work/firefox-58.0.1/ipc/chromium/src/base/platform_thread_posix.cc:40
#10 0x0000799c5d20b8b5 in ?? () from /usr/lib/libpthread.so.1
#11 0x0000799c5c281b50 in ?? () from /usr/lib/libc.so.12
Backtrace stopped: Cannot access memory at address 0x799c42200000
(gdb) i reg
rax            0x4ba213e0       1268913120
rbx            0x799c5c92e130   133712474988848
rcx            0x799c5c931000   133712475000832
rdx            0x40     64
rsi            0x799c4d749850   133712221345872
rdi            0x799c4eea2270   133712245826160
rbp            0x799c5c918040   0x799c5c918040
rsp            0x799c421ffc10   0x799c421ffc10
r8             0x0      0
r9             0x799c4464cd80   133712069315968
r10            0x0      0
r11            0x246    582
r12            0x2      2
r13            0x799c5c11e080   133712466534528
r14            0x799c5c126000   133712466567168
r15            0x0      0
rip            0x799c4a1d4c0c   0x799c4a1d4c0c <mozilla::ipc::MessageChannel::OnChannelErrorFromLink()+388>
eflags         0x10202  [ IF RF ]
cs             0x47     71
ss             0x3f     63
ds             0x3f     63
es             0x3f     63
fs             0x0      0
gs             0x0      0
(gdb) x/i 0x799c4a1d4c0c
=> 0x799c4a1d4c0c <mozilla::ipc::MessageChannel::OnChannelErrorFromLink()+388>:movl   $0x9f4,0x0
(gdb) 

The area around 2548 in ipc/glue/MessageChannel.cpp reads:

void
MessageChannel::OnChannelErrorFromLink()
{
    AssertLinkThread();
    mMonitor->AssertCurrentThreadOwns();

    IPC_LOG("OnChannelErrorFromLink");

    if (InterruptStackDepth() > 0)
        NotifyWorkerThread();

    if (AwaitingSyncReply() || AwaitingIncomingMessage())
        NotifyWorkerThread();

    if (ChannelClosing != mChannelState) {
        if (mAbortOnError) {
            MOZ_CRASH("Aborting on channel error.");
        }
        mChannelState = ChannelError;
        mMonitor->Notify();
    }

    PostErrorNotifyTask();
}

and we're, unsurprisingly, inside the MOZ_CRASH() call.

Regards,

- Håvard


Home | Main Index | Thread Index | Old Index