Comment 9 for bug 562811

Revision history for this message
Steve Langasek (vorlon) wrote :

ok, after tracing back and forth, I think ti's a plymouth bug after all.

The problem appears to be in ply_boot_client_process_incoming_replies - whenever it receives data from the server, it calls
ply_list_get_first_node (client->requests_waiting_for_replies) and passes the returned data to this client requetor. This means that if watch_for_keystroke() is called, and then another request is made that generates a reply, the keystroke handler gets the reply to the *next* request, discards it as "Received odd keys <foo>", and never gets the real keypress when it happens!

So I guess our requests_waiting_for_replies list needs to be tagged with the type of reply each one is expecting; the responses will be FIFO within each class, but may be out of order wrt responses of other types.

And the reason other keys aren't missed (for 'skip' or 'maintenance shell') is that only during fsck do we send more messages to plymouth after setting a key watch.

Scott, given this, I'm not sure why it *wasn't* reproducible for you... am I overlooking something?