I think this also will concern all versions of Puppy.
You run "chooselocale".
It restarts X.
When you exit X now (e.g. to reboot), you just see a garbled screen.
This happend in Xorg 7.4 with the "savage" driver.
I vaguely remember similar reports for the "original" Puppy, too.
Observing /var/log/Xorg.0.log I found this:
This is a bug, as Puppy just has 3 virtual terminals.(--) using VT number 4
Usually, it looks like:
It does not happen using the Xorg vesa driver.(--) using VT number 3
So why does X suddenly switch to console 4?
The reason is, how X is restarted.
I removed the "exec" in /usr/sbin/chooselocale
(in the end):
old:
Code: Select all
exec restartwm $CURRENTWM
Code: Select all
restartwm $CURRENTWM
old:
Code: Select all
exec killall -9 X #v1.0.7 make sure X is killed.
Code: Select all
killall -9 X #v1.0.7 make sure X is killed.
So why is this?
My guess:
If you "exec", then the current program "turns" into the new one.
So you have X running, (vt3), and now run a bash script.
It execs a NEW X, from the already running one, as a childprocess.
Some graficsdrivers interpret this in a way, that the old X still could block the old vt3, so for the new X, they switch to vt4.
If you remove th exec, the second X is no child of the first, and so the first will be "completely" exited correctly, before the second starts. Like this vt3 is free again, and used for the new X.
Mark