Opened 13 years ago

Closed 12 years ago

#10841 closed Bug Report - General (Fixed)

SignalHandling returns from SEGFAULT signal handler

Reported by: danielk Owned by: beirdo
Priority: minor Milestone: 0.26.1
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

If you return from a SIGFAULT, SIGFPE, SIGBUS, or SIGILL the offending code is re-run and the signal is raised again.

If the fault occurs in the the UI thread where SignalHandler::handleSignal() is run in it will never run since we never get the opportunity to continue on to where the QSocketNotifier events are handled.

This leads the write() in SignalHandler::signalHandler() to block forever, deadlocking the UI thread.

Attachments (1)

segfault-handling-poc-v1.patch (1.2 KB ) - added by danielk 13 years ago.
Proof-of-concept fix.

Download all attachments as: .zip

Change History (7)

by danielk, 13 years ago

Proof-of-concept fix.

comment:1 by Daniel Thor Kristjansson <danielk@…>, 13 years ago

In 546fdac8d1e952422c91278be3187ae87aded28e/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:2 by Daniel Thor Kristjansson <danielk@…>, 13 years ago

In 6f218b1ab4ad067f564eb07919560970cbb77de2/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:3 by Daniel Thor Kristjansson <danielk@…>, 13 years ago

In 62f3c643d80e617aa718421795ca3ac216e3c7cc/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:4 by beirdo, 13 years ago

Owner: set to beirdo
Status: newassigned

I think what you have so far will work, but I'm considering restructuring it so the signal handlers are in their own thread, which should simplify things a bit. If this hasn't been changed by Aug 1, please remind me to close it as fixed :)

comment:5 by Kenni Lund [kenni a kelu dot dk], 13 years ago

Milestone: 0.260.26.1

comment:6 by beirdo, 12 years ago

Resolution: Fixed
Status: assignedclosed

This is well past Aug 1, 2012. Let's consider this fixed.

Note: See TracTickets for help on using tickets.