[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Looping in stage-1



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


Reply to: