noise crashed with SIGSEGV in magazine_chain_pop_head()

Bug #1076002 reported by Jaroslav-huna
352
This bug affects 52 people
Affects Status Importance Assigned to Milestone
Noise
Fix Released
High
Unassigned

Bug Description

No clue.

ProblemType: Crash
DistroRelease: elementary OS 0.2
Package: noise 0.4+r1167-0+pkg29~precise1 [origin: LP-PPA-elementary-os-daily]
ProcVersionSignature: Ubuntu 3.2.0-32.51-generic 3.2.30
Uname: Linux 3.2.0-32-generic x86_64
ApportVersion: 2.0.1-0ubuntu14+elementary3~precise1
Architecture: amd64
CrashDB: noise
Date: Wed Nov 7 16:14:15 2012
ExecutablePath: /usr/bin/noise
InstallationMedia: elementary OS 0.2 "Luna" - Build amd64 LIVE Binary 20121101-17:25
ProcCmdline: noise
ProcEnviron:
 PATH=(custom, no user)
 LANG=cs_CZ.UTF-8
 SHELL=/bin/bash
SegvAnalysis:
 Segfault happened at: 0x7fd628ba5e2d <g_slice_alloc+477>: mov 0x8(%rax),%rbx
 PC (0x7fd628ba5e2d) ok
 source "0x8(%rax)" (0x00000009) not located in a known VMA region (needed readable region)!
 destination "%rbx" ok
SegvReason: reading NULL VMA
Signal: 11
SourcePackage: noise
StacktraceTop:
 g_slice_alloc () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
 ?? () from /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
 ?? () from /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
 pango_layout_get_pixel_extents () from /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
 pango_layout_get_pixel_size () from /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0
Title: noise crashed with SIGSEGV in g_slice_alloc()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo

Revision history for this message
Jaroslav-huna (jaroslav-huna) wrote :
Revision history for this message
RabbitBot (rabbitbot-a) wrote :

StacktraceTop:
 magazine_chain_pop_head (magazine_chunks=0x14fe030) at /build/buildd/glib2.0-2.32.3/./glib/gslice.c:528
 thread_memory_magazine1_alloc (ix=<optimized out>, tmem=<optimized out>) at /build/buildd/glib2.0-2.32.3/./glib/gslice.c:835
 g_slice_alloc (mem_size=72) at /build/buildd/glib2.0-2.32.3/./glib/gslice.c:994
 pango_layout_line_new (layout=0x23cc810) at /build/buildd/pango1.0-1.30.0/./pango/pango-layout.c:4713
 process_line (state=0x7fff086ad6a0, layout=0x23cc810) at /build/buildd/pango1.0-1.30.0/./pango/pango-layout.c:3556

Revision history for this message
RabbitBot (rabbitbot-a) wrote : Stacktrace.txt
Revision history for this message
RabbitBot (rabbitbot-a) wrote : ThreadStacktrace.txt
summary: - noise crashed with SIGSEGV in g_slice_alloc()
+ noise crashed with SIGSEGV in magazine_chain_pop_head()
tags: removed: need-amd64-retrace
Revision history for this message
Cody Garver (codygarver) wrote :

From another bug: "I submitted this yesterday and was told my packages where outdated. I did an sudo apt-get update and upgrade today to get the newest packages, still having the same bug, Noise crashes after playing 7 to 30 secs of a song, I did notice something today, if I keep the noise window open and active, Noise does not crash, but if I minimize or leave it in background some seconds later it crashes..."

Changed in noise:
status: New → Triaged
importance: Undecided → High
milestone: none → luna-beta2
Revision history for this message
Victor Martinez (victored) wrote :

This is the thread-safety issue I was talking about the other day. It seems a draw operation is being triggered from a thread other than GTK+'s main thread (which is the same default thread of the app). This happens after calling LibraryManager.update_media(), so we must check that no UI handler is fired from a separate thread.

The code to blame is the following:

LINE 587 - LibraryManager.vala:

    private async void update_smart_playlists_async () {
        SourceFunc callback = update_smart_playlists_async.callback;

        // Playlist.update_library() will fire the playlists' media_added() and media_removed() signals, which
        // trigger an update in PlaylistViewWrapper (this is the source of the redraw).
        Threads.add (() => {
            lock (_smart_playlists) {
                foreach (var p in smart_playlists ()) {
                    lock (_media) {
                        p.update_library (media ());
                    }
                }
            }
            Idle.add ((owned) callback);
        });

        yield;
    }

We should use Idle.add instead of Threads.add, which is not equivalent, but we must not do this from other thread anyway.

RabbitBot (rabbitbot-a)
information type: Private → Public
Revision history for this message
Corentin Noël (tintou) wrote :

It is an old bug, I hope it doesn't happened anymore, if it does, reopen it.

Changed in noise:
milestone: luna-beta2 → none
status: Triaged → Fix Committed
Changed in noise:
milestone: none → luna-beta2
Corentin Noël (tintou)
Changed in noise:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.