Recent Chromium and ubuntu-bug segfaults: kernel bug?

Marius Gedminas marius at pov.lt
Tue Apr 3 20:32:31 UTC 2012


Ubuntu 11.04, x86.  I've upgraded chromium-browser from oneiric-updates
and a few other packages today (kernel 3.0.0.17.20 -> 3.0.0.18.22, aptdaemon)
today and rebooted.  Now I can't launch chromium-browser:

    $ chromium-browser 
    [2:2:1611770310:ERROR:zygote_main_linux.cc(520)] write: Broken pipe
    Segmentation fault

    $ dmesg | tail -n 1
    [ 1611.746612] chromium-browse[7032] general protection ip:438a1c sp:bfb66cdc error:0 in libpthread-2.13.so[42b000+17000]

I also cannot launch ubuntu-bug:

    $ ubuntu-bug chromium-browser
    Segmentation fault

    $ dmesg | tail -n 1
    [ 1641.176913] apport-gtk[7091] general protection ip:5f3284 sp:bfcbd7fc error:0 in libc-2.13.so[527000+178000]

strace -f ubuntu-bug chromium-browser tells me that it spawns a subprocess to
run dpkg --print-architecture, and then the parent process dies.

Under gdb (after figuring out what process this is):

    $ file --dereference $(which ubuntu-bug)
    /usr/bin/ubuntu-bug: POSIX shell script text executable

    $ sh -x /usr/bin/ubuntu-bug chromium-browser
    ...
    + export APPORT_INVOKED_AS=/usr/bin/ubuntu-bug
    ...
    + /usr/share/apport/apport-gtk chromium-browser
    Segmentation fault

    $ file /usr/share/apport/apport-gtk
    /usr/share/apport/apport-gtk: a /usr/bin/python script text executable

    $ gdb --args python /usr/share/apport/apport-gtk chromium-browser
    (gdb) run
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0xadf9fb70 (LWP 5591)]
    0x003e5343 in _IO_fread (buf=0x8b19f9c, size=1, count=8192, fp=0x8b17a30)
        at iofread.c:47
    (gdb) bt
    #0  0x003e5343 in _IO_fread (buf=0x8b19f9c, size=1, count=8192, fp=0x8b17a30)
        at iofread.c:47
    #1  0x08085ea5 in file_read (f=0xb7677860, args=())
        at ../Objects/fileobject.c:1082
    #2  0x080fade1 in ext_do_call (nk=0, na=142098760, flags=<optimized out>, 
        pp_stack=0xadf9e524, func=
        <built-in method read of file object at remote 0xb7677860>)
        at ../Python/ceval.c:4331
    #3  PyEval_EvalFrameEx (f=
        Frame 0x85c7284, for file /usr/lib/python2.7/subprocess.py, line 478, in _eintr_retry_call (func=<built-in method read of file object at remote 0xb7677860>, args=()), throwflag=0) at ../Python/ceval.c:2705
    ...

When I run chromium-browser under strace it doesn't segfault, but halts in
poll().  The GUI window never shows up.  Under gdb, though:
 
    $ file $(which chromium-browser)
    /usr/bin/chromium-browser: POSIX shell script text executable

    $ sh -x /usr/bin/chromium-browser
    ...
    + LD_LIBRARY_PATH=/usr/lib/chromium-browser
    + export LD_LIBRARY_PATH
    ...
    + export CHROME_WRAPPER=/usr/bin/chromium-browser
    + export CHROME_DESKTOP=chromium-browser.desktop
    ...
    + export CHROME_VERSION_EXTRA=Ubuntu 11.10
    ...
    + exec /usr/lib/chromium-browser/chromium-browser
    [2:2:2361106329:ERROR:zygote_main_linux.cc(520)] write: Broken pipe
    Segmentation fault

    $ CHROME_VERSION_EXTRA=Ubuntu\ 11.10 CHROME_WRAPPER=/usr/bin/chromium-browser CHROME_DESKTOP=chromium-browser.desktop LD_LIBRARY_PATH=/usr/lib/chromium-browser gdb --args /usr/lib/chromium-browser/chromium-browser
    (gdb) run
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0xb7c15b70 (LWP 5795)]
    syscall () at ../sysdeps/unix/sysv/linux/i386/syscall.S:35
    (gdb) bt
    #0  syscall () at ../sysdeps/unix/sysv/linux/i386/syscall.S:35
    #1  0x80bbd1ab in epoll_wait ()
    #2  0x80bbcb50 in epoll_dispatch ()
    #3  0x80bbaca2 in event_base_loop ()
    #4  0x80b56c51 in base::MessagePumpLibevent::Run(base::MessagePump::Delegate*)
        ()
    #5  0x80b79492 in MessageLoop::RunInternal() ()
    #6  0x80b794f1 in MessageLoop::Run() ()
    #7  0x80b9c58b in base::Thread::Run(MessageLoop*) ()
    #8  0x80b9c4f2 in base::Thread::ThreadMain() ()
    #9  0x80b99dcc in base::(anonymous namespace)::ThreadFunc(void*) ()
    #10 0x00cd8d31 in start_thread (arg=0xb7c15b70) at pthread_create.c:304
    #11 0x011c446e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130
    Backtrace stopped: Not enough registers or memory available to unwind further

I find it extremely suspicious that two unrelated applications have started
segfaulting suddenly deep in system libraries.  So... kernel bug?

Rebooting back into 3.0.0-17 to see what happens there.

    $ grep -- -17 /boot/grub/grub.cfg
    $ sudo grub-reboot 'Ubuntu, su Linux 3.0.0-17-generic'
    $ sudo reboot

** later ** 'sudo grub-reboot' did not do anything; I got the -18 kernel
and had to reboot again, then select the older one manually from the
grub menu.

I cannot reproduce either segfault with the -17 kernel.  I'll file a
kernel bug now in launchpad.

Marius Gedminas
-- 
If you are good, you will be assigned all the work.  If you are real
good, you will get out of it.

Marius Gedminas
-- 
   TCP_SeqNum - The 32-bit Sequence Number, encoded as an ASCII string
      representing the hex value of the Sequence number.  This field
      MUST be sent as lower case because it is not urgent.
                -- RFC 3093
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/ubuntu-users/attachments/20120403/9634f419/attachment.pgp>


More information about the ubuntu-users mailing list