#15531 closed Bugs (Obsolete)

Segfault during add-ons "Check for updates"

Reported by: Milhouse Owned by: jfcarroll
Priority: 4 - Normal
Component: Python Code and/or Scripts Version: 14.0 "Helix" RC2
Severity: Normal Keywords:
Cc: mkortstiege, takoi Blocked By:
Blocking: Platform: All

Description

This is tricky to reproduce on-demand, but happens frequently enough to be annoying.

I'm not sure what the exact circumstances are that causes this, but it's always while clicking "Check for updates" in the top level Add-ons menu.

What follows is the back-trace from a Raspberry Pi running a debug-enabled OpenELEC build from Oct 26 (details) when the segfault occurs after clicking "Check for updates":

[Thread 0xa0bfe450 (LWP 655) exited]
[New Thread 0xa0bfe450 (LWP 656)]
[Thread 0xa0bfe450 (LWP 656) exited]
[New Thread 0xa0bfe450 (LWP 657)]
[Thread 0xa0bfe450 (LWP 657) exited]

Program received signal SIGSEGV, Segmentation fault.
0x00638ec4 in CBackgroundInfoLoader::StopAsync ([email protected]=0x0) at BackgroundInfoLoader.cpp:127
127     BackgroundInfoLoader.cpp: No such file or directory.
(gdb) bt
#0  0x00638ec4 in CBackgroundInfoLoader::StopAsync ([email protected]=0x0) at BackgroundInfoLoader.cpp:127
#1  0x00638ed8 in CBackgroundInfoLoader::StopThread ([email protected]=0x0) at BackgroundInfoLoader.cpp:133
#2  0x0063907c in CBackgroundInfoLoader::Load ([email protected]=0x0, items=...) at BackgroundInfoLoader.cpp:104
#3  0x0047d858 in CGUIWindowAddonBrowser::Update (this=0x254d790, strDirectory=..., updateFilterPath=<optimized out>) at GUIWindowAddonBrowser.cpp:425
#4  0x00613adc in CGUIMediaWindow::Refresh (this=0x254d790, clearCache=<optimized out>) at GUIMediaWindow.cpp:882
#5  0x0047c9e8 in CGUIWindowAddonBrowser::OnClick (this=0x254d790, iItem=<optimized out>) at GUIWindowAddonBrowser.cpp:281
#6  0x00619fe0 in CGUIMediaWindow::OnMessage ([email protected]=0x254d790, message=...) at GUIMediaWindow.cpp:303
#7  0x0047bff4 in CGUIWindowAddonBrowser::OnMessage (this=0x254d790, message=...) at GUIWindowAddonBrowser.cpp:148
#8  0x00431af8 in CGUIBaseContainer::OnClick (this=0x32e3330, actionID=7) at GUIBaseContainer.cpp:753
#9  0x003de830 in CGUIWindow::OnAction ([email protected]=0x254d790, action=...) at GUIWindow.cpp:419
#10 0x0061502c in CGUIMediaWindow::OnAction (this=0x254d790, action=...) at GUIMediaWindow.cpp:183
#11 0x003e1a14 in CGUIWindowManager::OnAction (this=0x226a9c8, action=...) at GUIWindowManager.cpp:488
#12 0x006283d0 in CApplication::OnAction (this=0x2267880, action=...) at Application.cpp:2596
#13 0x00629b94 in CApplication::OnKey ([email protected]=0x2267880, key=...) at Application.cpp:2511
#14 0x00629df0 in CApplication::ProcessRemote ([email protected]=0x2267880, [email protected]=0.0400000028) at Application.cpp:3066
#15 0x0062ad70 in CApplication::FrameMove (this=0x2267880, processEvents=<optimized out>, processGUI=<optimized out>) at Application.cpp:2952
#16 0x0067e288 in CXBApplicationEx::Run (this=0x2267880) at XBApplicationEx.cpp:141
#17 0x00681918 in XBMC_Run (renderGUI=<optimized out>) at xbmc.cpp:69
#18 0x002fef98 in main (argc=5, argv=0xbecb0994) at main.cpp:91

This is the backtrace from a non-debug OpenELEC on Pi build (based on current master, ca14ec10fbb433c69bd3ad04a8a3377f2d516329), just to confirm the bug is still present in current master:

[New LWP 1683]
[LWP 1708 exited]

Program received signal SIGSEGV, Segmentation fault.
0x0063ae4c in CBackgroundInfoLoader::StopAsync() ()
(gdb) bt
#0  0x0063ae4c in CBackgroundInfoLoader::StopAsync() ()
#1  0x0063ae60 in CBackgroundInfoLoader::StopThread() ()
#2  0x0063b004 in CBackgroundInfoLoader::Load(CFileItemList&) ()
#3  0x0047fdec in CGUIWindowAddonBrowser::Update(std::string const&, bool) ()
#4  0x00615a9c in CGUIMediaWindow::Refresh(bool) ()
#5  0x0047ef7c in CGUIWindowAddonBrowser::OnClick(int) ()
#6  0x0061bfa0 in CGUIMediaWindow::OnMessage(CGUIMessage&) ()
#7  0x0047e588 in CGUIWindowAddonBrowser::OnMessage(CGUIMessage&) ()
#8  0x004340dc in CGUIBaseContainer::OnClick(int) ()
#9  0x003e0f28 in CGUIWindow::OnAction(CAction const&) ()
#10 0x00616fec in CGUIMediaWindow::OnAction(CAction const&) ()
#11 0x003e40f8 in CGUIWindowManager::OnAction(CAction const&) const ()
#12 0x0062a390 in CApplication::OnAction(CAction const&) ()
#13 0x0062bb4c in CApplication::OnKey(CKey const&) ()
#14 0x0062bda8 in CApplication::ProcessRemote(float) ()
#15 0x0062cd28 in CApplication::FrameMove(bool, bool) ()
#16 0x00680208 in CXBApplicationEx::Run() ()
#17 0x00683888 in XBMC_Run ()
#18 0x00301588 in main ()

I've tried (and failed) to reproduce in Ubuntu/x86, so it's looking to be Pi specific right now, maybe a timing issue.

If you need the debug-enabled backtrace from current master let me know, but hopefully the above is sufficient for now (creating debug builds of OpenELEC is a PITA :))

I've picked the Python component for this, although that could well be incorrect - please reassign as required.

Change History (6)

comment:1 Changed at 2014-11-08T10:17:32Z by Martijn

  • Cc mkortstiege takoi added

maybe you guys can find out why

comment:2 Changed at 2014-11-08T10:36:22Z by mkortstiege

I´ve already tried but as already pointed out it is pretty hard to trigger it within a sane development env.

comment:3 Changed at 2014-11-08T10:50:08Z by takoi

That line segfaulting is a volatile assignment so I'd guess related to threading library/linux specific. cc someone on that?

comment:4 Changed at 2014-11-18T21:52:55Z by popcornmix

I think the only way StopAsync can segfault is if the object was deleted before StopAsync was called.

comment:5 Changed at 2014-12-06T13:02:35Z by Martijn

  • Version changed from 14.0 "Helix" Beta1 to 14.0 "Helix" RC2

users report it still happens.

http://pastebin.com/3XFk1TdX

comment:6 Changed at 2016-10-01T15:30:31+01:00 by takoi

  • Cc changed from mkortstiege, takoi, to mkortstiege, takoi
  • Resolution set to Obsolete
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.