[Splashy-devel] Bug#505270: A solution

Tim Richardson tim at tim-richardson.net
Mon Jan 5 11:00:58 UTC 2009


Thanks to #splashy and Mattkijs Kooijman, we have a solution.

It's not a very good solution, but it proves we know what the problem
is:

The solution is to delay the init process for one or two seconds after
splashy boot


ie change /usr/share/initramfs-tools/scripts/local-premount/splashy
and add
sleep 2  #smaller values probably work


so that the code looks like



grep -q '\(VESA\|VGA\)' /proc/fb || exit

/sbin/splashy boot
sleep 2  #smaller values probably work




The problem (my theory)

the splashy scripts forks and exits quickly, while its child process
does the work of initialising directfb.
This fast exit of splashy lets the init process continue.  (thanks
Matthijs)

On my computers, and other computers, this sets up a race condition.
It seems that initramfs is being unmounted while the splashy children
are working to setup directfb. 
directfb finds that the file system has gone by the time the call to
CreatFont happens. 

This is probably only a matter of milliseconds. In v 3.10, the earlier
start of splashy boot avoided this problem.

The workaround hack to set up a directfb log file also probably causes
enough of a delay to avoid the problem (as guessed by directfb
developers)

A sleep in local-premount at the end of the splashy script is a crude
mechanism to buy enough time for the child process to finish its
initialisation of directfb






More information about the Splashy-devel mailing list