Hi Joey, [I have a sinking feeling I'm doing something stupid here. Can't think what, though, and d-i should crash like this anyway.] I (think) I follow your argument with d-i and anna. It certainly seems logical, but I don't know enough about how anna or mainmenu are supposed to work to say more. Guessing, I'd say the d-i crash somehow caused d-i and anna to loose its state, hence the complete re-install and confused behaviour. Perhaps init restarting d-i somehow didn't start d-i from its initial state (temporary files already existing?) -- but this is all guess-work. I've copied the contents of the /var/lib/dpkg directory to: http://www.astro.gla.ac.uk/users/paulm/debian-boot/dpkg/ Curiously enough, there's two status files (status and status.bak). Is this normal? With gdb, I'm no expert, but I have used it in anger. If you can point me in the direction of a suitable initrd image (say, running d-i through gdb somehow) or just a udeb of gdb (for manual interaction) I can probably report a trace-back of the stack after the crash. Cheers, Paul. On Thursday 17 November 2005 17:55, Joey Hess wrote: > Nov 16 23:37:11 anna[3244]: DEBUG: resolver (anna): accept cdebconf-udeb, > already installed ... > Nov 16 23:37:11 debconf: --> SUBST anna/progress_step_retr PACKAGE > cdebconf-udeb Nov 16 23:37:11 debconf: Adding [PACKAGE] -> [cdebconf-udeb] > Nov 16 23:37:11 debconf: <-- 0 > Nov 16 23:37:11 debconf: --> SUBST anna/progress_step_inst PACKAGE > cdebconf-udeb Nov 16 23:37:11 debconf: Adding [PACKAGE] -> [cdebconf-udeb] > Nov 16 23:37:11 debconf: <-- 0 > Nov 16 23:37:11 debconf: --> PROGRESS INFO anna/progress_step_retr > ... > Nov 16 23:37:11 debconf: --> X_LOADTEMPLATEFILE > /var/lib/dpkg/info/cdebconf-udeb.templates > > Very strange, it should not be downloading and installing cdebconf-udeb, > which is of course built into the d-i initrd, but apparently it does > anyway. It does the same thing for anna itself and for other packages > in the initrd. I don't see this behavior locally. > > After this when we get back to the main menu, it does this: > > Nov 16 23:37:21 debconf: --> SUBST debian-installer/main-menu MENU Choose > language, Select a keyboard layout, Detect network hardware, Configure the > network, Choose a mirror of the Debian archive, Download instal Nov 16 > 23:37:21 debconf: Adding [MENU] -> [Choose language, Select a keyboard > layout, Detect network hardware, Configure the network, Choose a mirror of > the Debian archive, Download installer components] Nov 16 23:37:21 debconf: > <-- 0 > Nov 16 23:37:21 debconf: --> INPUT medium debian-installer/main-menu > Nov 16 23:37:21 debconf: <-- 30 question skipped > Nov 16 23:37:21 debconf: --> GO > Nov 16 23:37:21 debconf: <-- 0 ok > Nov 16 23:37:21 debconf: --> GET debian-installer/main-menu > Nov 16 23:37:21 debconf: <-- 0 Download installer components > > Now, the main-menu code is this: > > debconf_subst(debconf, MAIN_MENU, "MENU", menu); > if (menudefault) { > menu_entry(debconf, menudefault, buf, sizeof (buf)); > debconf_set(debconf, MAIN_MENU, buf); > } > debconf_input(debconf, MENU_PRIORITY, MAIN_MENU); > debconf_go(debconf); > debconf_get(debconf, MAIN_MENU); > s = strdup(debconf->value); > > So apparently menudefault is not set or it would choose something else. > menudefault is set by di_system_package(), and it has only one case where > it returns NULL, which is if all the available menu items are marked > as alredy having been run, or if the input list has no menu items on it. > > After the first anna run which for some reason reinstalls everything > that's already on the initrd, further anna runs do nothing at all, > anna knows then that everything is already installed. > > So we're left with two unexplained strange behaviors in two different > programs. The common element is that both involve the udpkg status file, > and the libd-i code that reads it. If that code gets confused and > somehow the first anna run gets a list with nothing in it, and main-menu > gets a list with all the menu items marked as run (or an empty list), > that would explain both behaviors. > > I wonder what the /var/lib/dpkg/status file from the installer looks > like? > > Of course on top of this there's still the original d-i crash and > restart: > > Nov 16 23:37:09 debconf: --> METAGET debian-installer/choose-mirror/title > Description-en_GB.UTF-8 Nov 16 23:37:09 debconf: <-- 0 Choose a mirror of > the Debian archive Nov 16 23:37:09 debconf: --> SET > debian-installer/main-menu Choose a mirror of the Debian archive Nov 16 > 23:37:09 debconf: <-- 0 value set > Nov 16 23:37:09 debconf: --> INPUT medium debian-installer/main-menu > Nov 16 23:37:09 debconf: <-- 30 question skipped > Nov 16 23:37:09 debconf: --> GO > Nov 16 23:37:09 init: ^MProcess '/sbin/debian-installer' (pid 1218) exited. > Scheduling it for restart. > > That's the first thing to go wrong, before all the other crazy stuff, > and it seems to me that it must be related or even the cause of it. It's > probably not cooincidental that this crash is near the same block of code > that I pasted above. Apprently in between the GO and the GET, although I > can't imagine how it could crash there. > > I think the next step would be running main-menu in gdb as it crashes > and seeing what the actual problem is. If you're familiar with gdb I can > try to prepare an image that can do that.
Attachment:
pgphER9JHcGHv.pgp
Description: PGP signature