Comment 3 for bug 1578579

Revision history for this message
Pierre Equoy (pieq) wrote :

After investigating the device Scott was using, it looks like the root cause is not Checkbox.

Checkbox uses udev to determine the available hardware and create the appropriate jobs to test the device. The jobs are determined everytime a Checkbox session is started or resumed. When a session is resumed, the list of previously generated jobs is compared to the list of newly generated jobs to make sure there is no discrepancies.

After some investigation, we discovered that for this specific device, udev sees two different touchpads (although the device only has one touchpad physically available), but after suspending and resuming the device, one of the touchpads disappears from udev, leading to the Checkbox crash mentioned above.

A way to check this is as follow:

1. Power the device on
2. udevadm info --export-db | grep -i "dell.*touchpad\|synpatics.*touchpad"
    → in my case, I see two touchpads (one from Dell, one from Synaptics)
3. Suspend the device
4. Resume the device, and wait 30 seconds
5. Rerun Step 2. command.
    → the Synaptics touchpad has disappeared!

With all that said, one thing we can do to avoid Checkbox crashing is to make the "plainbox.impl.session.resume.CorruptedSessionError: Unknown jobs" exception non-fatal and try to continue resuming the session.