Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#3512 closed Bug (invalid)

segmentation fault at random times

Reported by: pcrawford Owned by:
Priority: Normal Milestone: None Set
Component: Transmission Version: 2.04
Severity: Normal Keywords:
Cc:

Description

Using "Transmission 2.04 (11151)", as well as the older distribution-supplied version, on 32-bit Ubuntu 10.04 I am finding it is crashing after maybe tens of minutes to an hour or so. The only syslog messages are along the lines of:

Aug 15 10:42:00 paul-ubuntu kernel: [ 5157.172887] transmission[4924]: segfault at 79685720 ip 00e6b17f sp bfde36b0 error 4 in libgobject-2.0.so.0.2400.1[e41000+3d000]
Aug 15 11:48:57 paul-ubuntu kernel: [ 9174.793352] transmission[6025]: segfault at 3 ip 0015317f sp bfd2ea70 error 4 in libgobject-2.0.so.0.2400.1[129000+3d000]
Aug 15 13:47:00 paul-ubuntu kernel: [16257.282598] transmission[6668]: segfault at 6d2e6874 ip 001be17f sp bfa9caa0 error 4 in libgobject-2.0.so.0.2400.1[194000+3d000]

Not much to go on I accept. Currently it has 8 torrents running, of which 2 are downloads, and it is running with speed limiting (down 20kb/sec, up 15kb/sec) to avoid my broadband account being limited due to excess day-time usage.

Is there anything I can do to get more debugging information about the precise cause of the segfault?

Change History (10)

comment:1 Changed 11 years ago by kovalev

Have experienced recently the same issue with Transmission 2.04 (11151) running on 64-bit Ubuntu 10.04:

Aug 17 11:22:01 kovalev-home kernel: [297329.066275] ratelimit: 43 callbacks suppressed Aug 17 11:22:01 kovalev-home kernel: [297329.066285] transmission[8218]: segfault at 1400000014 ip 00007f72864db131 sp 00007ffffb6b85d0 error 4 in libgobject-2.0.so.0.2400.1[7f72864af000+45000]

So far, I have been unsuccessful in trying to reproduce the crash. The only thing I have noticed is that the crash seems had happened after several switchings of T main window on and off via icon in desktop notification area.

Using Transmission GTK 2.04 release 11151 on 64-bit Ubuntu 10.04 with kernel 2.6.32-24 and Gnome 2.30.2

comment:2 follow-up: Changed 11 years ago by pcrawford

I can't provoke it in any obvious manner. Since my original post, it has run for almost 2 days without fault.

One of the torrents has a lot of trackers that are broken, maybe some sort of error reply was doing it? No idea really, which is why I wondered if there is a debug setting that would capture something (e.g. core dump) to allow analysis.

comment:3 in reply to: ↑ 2 Changed 11 years ago by kovalev

Replying to pcrawford:

I can't provoke it in any obvious manner. Since my original post, it has run for almost 2 days without fault.

One of the torrents has a lot of trackers that are broken, maybe some sort of error reply was doing it? No idea really, which is why I wondered if there is a debug setting that would capture something (e.g. core dump) to allow analysis.

After one week of running Transmission (GTK 2.04 release 11151 on 64-bit Ubuntu 10.04) with several torrents downloading/uploading and many public trackers on the list, I have still been unable to reproduce the issue. Interesting however is that the crash had occurred repeatedly for two-three times within one and half an hour. Thus I guess the issue is related to how Transmission handles communication errors with peers or (less probably) with trackers. Being pretty rare the issue is definitely hard to track down and has little effect on T performance. On the other side, it might expose a potential threat from malignant peers throwing in bad/corrupt data etc...

comment:4 Changed 11 years ago by charles

  • Resolution set to invalid
  • Status changed from new to closed

Ubuntu should have a mechanism to file new tickets with a crash report automatically attached. Ubuntu's guidelines for bug triaging suggests that crash tickets without these crash reports be closed so that they can be refiled to launchpad with the crash reports, so I guess that's what I ought to do here:

https://wiki.ubuntu.com/Bugs/Responses#Missing%20a%20crash%20report%20or%20having%20a%20.crash%20attachment

Thank you for taking the time to report this bug and helping to make Ubuntu better. However, your crash report is either missing or challenging to deal with as a ".crash" file. Please follow these instructions to have apport report a new bug about your crash that can be dealt with by the automatic retracer.

If you are running the Ubuntu Stable Release you might need to enable apport in /etc/default/apport and restart.

If you are using Ubuntu with the Gnome desktop environment - launch nautilus and navigate to your /var/crash directory and double click on the crash report you wish to submit. If you are using Kubuntu or Xubuntu you can file the crash using /usr/share/apport/apport-qt --crash-file=/var/crash/_my_crash_report.crash in a terminal - where _my_crash_report.crash is the crash you would like to report.

I'm closing this bug report since the process outlined above will automatically open a new bug report which can then dealt with more efficiently. Thanks in advance for your cooperation and understanding.

comment:5 Changed 11 years ago by kovalev

  • Resolution invalid deleted
  • Status changed from closed to reopened

Have to re-open this ticket - this time with apport crash report available:

Aug 28 19:02:25 kovalev-home kernel: [334476.473555] ratelimit: 43 callbacks suppressed Aug 28 19:02:25 kovalev-home kernel: [334476.473564] transmission[2381] general protection ip:7f3c44b1c131 sp:7fffaeee4210 error:0 in libgobject-2.0.so.0.2400.1[7f3c44af0000+45000]

Would somebody be so kind to advice me the best method to send a ca. 6MB crash report to the Transmission team (the limit on attachment size here is 256 kB)?

comment:6 Changed 11 years ago by charles

  • Resolution set to invalid
  • Status changed from reopened to closed

I'm going to reclose this ticket -- you're trying to push a square peg through a round hole. Please use Ubuntu's crash report tool.

After you've filed your apport crash via Ubuntu, you'll have a ticket where the Apport retracing system will massage your crash report into something human-readable. See this ticket for one random example of what Launchpad's system can do.

comment:7 follow-up: Changed 11 years ago by pcrawford

I enabled apport, and it happened again today, but apport then told me it was not a genuine Ubuntu package. I assume this is due to using the http://ppa.launchpad.net/transmissionbt/ppa/ubuntu repository.

What now? You recommend using the latest build package in case a bug has already been fixed, but then you ask for the Ubuntu's crash report tool that is not working with the latest build!

comment:8 in reply to: ↑ 7 Changed 11 years ago by kklimonda

Replying to pcrawford:

What now? You recommend using the latest build package in case a bug has already been fixed, but then you ask for the Ubuntu's crash report tool that is not working with the latest build!

Yes, you can't use apport to send data to Launchpad for packages that aren't part of the official Ubuntu distribution. But all hope is not lost, if you have a recent version of transmission from our semi-official PPA (installed after the 3rd of October - If your package has been installed before this date you have to update it and wait for another crash) you can get all the data about the crash manually on your computer without sending it to Launchpad. Then you can paste it here. :)

After transmission crashes and you get the dialog about sending crash to developers close it -- if it has already crashed then you can ignore this part. Now, in /var/crash/ there should be some files -- one of them named something like _usr_bin_transmission-gtk.1000.crash. The exact name depends on a transmission client you are running and your user's uid - it's transmission-qt for Qt client, transmission-daemon for a daemon and transmission-cli for the cli version.

The .crash file is a core dump with some additional metadata that Ubuntu developers can use to triage bug further. But it's useless for Charles so we have to process it. There are few ways of doing that but simply unpacking it, getting raw CoreDump? and using gdb on it is the fastest way if you don't have a pre-configured environment:

  1. Make sure you have package "transmission-dbg" installed. It's not available for transmission packages uploaded before 3rd of October and that's my fault.
  2. First, please write:
    $ apport-unpack /var/crash/_usr_bin_transmission-gtk.1000.crash /tmp/transmission.crash/
    
    (make sure that you are pointing to the right file). This will create a directory /tmp/transmission.crash/
  3. Now we need gdb to get the stacktrace:
    $ gdb /usr/bin/transmission-gtk /tmp/transmission.crash/CoreDump
    
    You will get to the gdb prompt, now type:
       (gdb) set logging file /tmp/transmission.crash/gdb.txt
       (gdb) set logging on
       (gdb) thread apply all bt full
    
    "(gdb)" is printed by gdb so you don't have to type it yourself. Press enter few times until you get the gdb prompt back and then close it.
  4. You should have a full backtrace in /tmp/transmission.crash/gdb.txt, paste the content of this file here.

comment:9 Changed 11 years ago by pcrawford

Thanks! I installed the 'transmission-dbg' option from the repository then on loading 'gdb' with the options:

$gdb /usr/bin/transmission /tmp/transmission.crash/CoreDump

It listed all of the libraries, then it said:

Core was generated by `transmission'.
Program terminated with signal 11, Segmentation fault.
#0  0x001e4189 in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0
(gdb) set logging file /tmp/transmission.crash/gdb.txt
(gdb) set logging on
Copying output to /tmp/transmission.crash/gdb.txt.
(gdb) thread apply all bt full

After running the commands you suggested, it produced this output in to the file:

Thread 3 (Thread 3580):
#0  0x00b119c7 in ?? () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#1  0x00b0c93c in calloc () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0x002fa4f6 in ?? () from /usr/lib/libcurl-gnutls.so.4
No symbol table info available.
#3  0x003097b3 in curl_easy_init () from /usr/lib/libcurl-gnutls.so.4
No symbol table info available.
#4  0x080a7d6b in createEasy (vsession=0x957c5b0) at web.c:143
        addr = <value optimised out>
        e = 0xb48c9558
#5  tr_webThreadFunc (vsession=0x957c5b0) at web.c:276
        msec = 0
        msg = <value optimised out>
        mcode = <value optimised out>
        task = 0xb6521c98
        unused = 0
        multi = <value optimised out>
        taskCount = 57
#6  0x080904b2 in ThreadFunc (_t=0x95784d0) at platform.c:109
No locals.
#7  0x0020696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#8  0x00b6aa4e in clone () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.

Thread 2 (Thread 3579):
#0  0x004eb422 in __kernel_vsyscall ()
No symbol table info available.
#1  0x00b6b2c6 in epoll_wait () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0x00160762 in ?? () from /usr/lib/libevent-1.4.so.2
No symbol table info available.
#3  0x0015302f in event_base_loop () from /usr/lib/libevent-1.4.so.2
No symbol table info available.
#4  0x001533c9 in event_loop () from /usr/lib/libevent-1.4.so.2
No symbol table info available.
#5  0x001533ee in event_dispatch () from /usr/lib/libevent-1.4.so.2
No symbol table info available.
#6  0x080a438d in libeventThreadFunc (veh=0x957c6d0) at trevent.c:229
No locals.
#7  0x080904b2 in ThreadFunc (_t=0x957c760) at platform.c:109
No locals.
#8  0x0020696e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#9  0x00b6aa4e in clone () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.

Thread 1 (Thread 3578):
#0  0x001e4189 in g_type_check_instance_cast () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#1  0x080663b0 in trackerVisibleFunc (model=0x9919dc0, iter=0xbf925d20, data=0x979a768) at details.c:1911
        isBackup = 2064372
#2  0x008f1427 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#3  0x008f328a in ?? () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#4  0x0080385f in ?? () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#5  0x001c5252 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#6  0x001d999d in ?? () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#7  0x001dadb4 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x001db256 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#9  0x008ef328 in gtk_tree_model_row_changed () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#10 0x007fd806 in gtk_list_store_set_valist () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#11 0x007fd83f in gtk_list_store_set () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#12 0x080664a7 in favicon_ready_cb (pixbuf=0x9a50000, vreference=0x95ba9f0) at details.c:1954
        path = 0x9a4c638
        model = 0x9919dc0
        iter = {stamp = 954528968, user_data = 0x99a7398, user_data2 = 0x0, user_data3 = 0x0}
#13 0x0806bb9f in favicon_web_done_idle_cb (vfav=0x9976058) at favicon.c:121
        pixbuf = 0x53e58955
#14 0x00620358 in ?? () from /usr/lib/libgdk-x11-2.0.so.0
No symbol table info available.
#15 0x00253661 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#16 0x002555e5 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
No symbol table info available.
#17 0x002592d8 in ?? () from /lib/libglib-2.0.so.0
No symbol table info available.
#18 0x00259817 in g_main_loop_run () from /lib/libglib-2.0.so.0
No symbol table info available.
#19 0x007ff3c9 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
No symbol table info available.
#20 0x08073ba0 in main (argc=1, argv=0xbf9265a4) at main.c:680
        primary_text = <value optimised out>
        w = 0x9686368
        err = 0x0
        argfiles = 0x0
        gerr = 0x0
        didinit = 1
        didlock = 1
        showversion = 0
        startpaused = 0
        startminimized = 0
        configDir = 0x952bd00 "/home/paul/.config/transmission"
        tr_state = GTR_LOCKFILE_SUCCESS
        entries = {{long_name = 0x80daa58 "paused", short_name = 112 'p', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0xbf9264d0, 
            description = 0x80dacec "Start with all torrents paused", arg_description = 0x0}, {long_name = 0x80df07a "version", short_name = 0 '\000', flags = 0, 
            arg = G_OPTION_ARG_NONE, arg_data = 0xbf9264d4, description = 0x80daa3b "Show version number and exit", arg_description = 0x0}, {
            long_name = 0x80daa5f "minimized", short_name = 109 'm', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0xbf9264cc, 
            description = 0x80dad0c "Start minimized in notification area", arg_description = 0x0}, {long_name = 0x80daa69 "config-dir", short_name = 103 'g', flags = 0, 
            arg = G_OPTION_ARG_FILENAME, arg_data = 0xbf9264c8, description = 0x80dad34 "Where to look for configuration files", arg_description = 0x0}, {long_name = 0x0, 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, arg_description = 0x0}}

To me it makes little sense as all debug symbols appear to have been stripped out of the binary in use. If this is of limited use, is there a debug version I could use to hopefully trap it in the future?

comment:10 Changed 11 years ago by pcrawford

Just to add the version information:

$ apt-cache policy transmission
transmission:
  Installed: (none)
  Candidate: 2.04-0ubuntu1.10.04.2
  Version table:
     2.04-0ubuntu1.10.04.2 0
        500 http://ppa.launchpad.net/transmissionbt/ppa/ubuntu/ lucid/main Packages
     1.93-0ubuntu0.10.04.1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ lucid-updates/universe Packages
     1.92-0ubuntu2 0
        500 http://gb.archive.ubuntu.com/ubuntu/ lucid/universe Packages

Note: See TracTickets for help on using tickets.