signalling problems during X/wm startup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Rawhide (and possibly other versions too) anaconda has race conditions when starting X. We fire up X.org binary and go into signal.pause(), waiting for either SIGUSR1 from X when it is started or SIGCHLD if it terminated with an error. The problem is: before this branch of code even begins anaconda has forked() itself and me might see many more SIGCHLD signals coming from these non-X processes. If that happens, the code responsible for starting X assumes X has failed (though it has not) and switches for text install.

There's many more similar scenarios depending on when exactly is SIGCHLD delivered. For instance if SIGUSR arrives and resumes the signal.pause and then immediately SIGCHLD arrives, it messes up startup of the window manager that was going on after startup of X. Typically it hits the os.read() bit when main anaconda is watching the pipe with mini-wm. This raises an WhateverSystemCallInterrupted exception and kills anaconda. But there are endlessly more possibilities, the beauty of concurrency lies in its lack of determinism.

Nonetheless, I seem to be the only one person running into this, maybe it's because I test on a specific vmware server that gives me a unique timing to trigger these problems. I am attaching a fix which specifically forks the offending children into orphans. If similar bugs start showing up more often we will perhaps need to change the X startup mechanism (I am not sure how though).

Ales

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux