Ticket #5400 (closed defect: fixed)

Opened 7 years ago

Last modified 7 years ago

OHM crashes when X does.

Reported by: cjb Owned by: cjb
Priority: blocker Milestone: Update.1
Component: power manager (OHM) Version:
Keywords: Cc:
Action Needed: Verified: no
Deployments affected: Blocked By:
Blocking:

Description

As noticed by jg; after ctrl+alt+delete, X returns but ohm doesn't.

OHM appears to notice that the dpy has gone away and frees it, but then attempts to reuse it later.

Change History

Changed 7 years ago by cjb

OHM crashes when X does because X forces all of its clients to exit when it crashes. Adding an XSetIOErrorHandler() callback doesn't help.

There is no workaround short of longjmp()ing to ensure the handler method never actually returns to Xlib (or moving the X client into a separate process from the rest of OHM). How ridiculous.

The shortest workaround is going to be to have OHM respawn via inittab in the same way that X does. I don't know how well that will work yet, though.

Changed 7 years ago by bernie

I think libxcb would be an elegant solution to this problem. The library itself is just 100KB, plus a bunch of ancilliary libraries of a few KBs each, one per extension.

We can conveniently install the Fedora 8 libxcb package on our F7+ system.

Changed 7 years ago by cjb

Temporary workaround (Bernie's idea) is to exec() /usr/sbin/ohmd in the X handler. Long-time fix is to move to Xcb sometime after Update.1.

Tested and pushed to Joyride.

Changed 7 years ago by cjb

  • status changed from new to closed
  • resolution set to fixed

Tested working in Joyride; closing (without the verified tag).

Note: See TracTickets for help on using tickets.