NetBSD-Bugs archive

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

Re: install/53220: sysinst dumps core with extended partitioning.

The following reply was made to PR install/53220; it has been noted by GNATS.

From: Robert Elz <kre%munnari.OZ.AU@localhost>
Subject: Re: install/53220: sysinst dumps core with extended partitioning.
Date: Tue, 01 May 2018 19:57:58 +0700

     Date:        Tue,  1 May 2018 09:25:01 +0000 (UTC)
     From:        Martin Husemann <>
     Message-ID:  <>
   |  OK, you are using the ram disk based installers, while I tested with the
   |  CD image.
 Yes, the original PR text from Lars-Johan Liman says:
 3. Boot a Xen virtual machine with the 8.0_RC1
    netbsd-INSTALL_XEN3_DOMU kernel.
 And then,  when I repeated it:
  Boot netbsd-INSTALL kernel from
 though any netbsd-INSTALL kernel does the same (my earlier bare
 metal test did not use the XEN3_DOMU kernel, obviously.)
   |  >  	gpt [-q] query dev
   |  I did a very lazy poor man's version of that.
 That should be fine.   I had in the back of my mind the potential to
 add options to "gpt query" to test other things which a script might
 want to know, but if that need ever eventuates, it can be done then,
 and the "header" command can continue exit(1) for no GPT.
   |  >  Of course, the same recipe for disaster (not potential) exists when
   |  >  there is no insalled vnconfig (or vndconfig) program at all - which is
   |  >  the case on the MFS mini-roon that's embedded in the INSTALL
   |  >  kernel.
   |  We have the "have_vnd" variable to note that.
 We do, so when have_vnd is false, the code does...
                  if (!have_vnd)
 If someone was looking for a way to manufacture a core file
 in a way that gdb would fail to be of much help, I can't think of
 many easier strategies...
   |  Indeed, but I'm not quite sure what menus exactly you want to remove
   |  in this case.
 No idea, I did not look that deeply, but if there are none, then just not
 removing the not existing menus would be better than what it is doing now.
 That is, change:
                 if (!have_vnd)
                 else if (!(vnds = calloc(MAX_VND, sizeof(*vnds))))
                         have_vnd = 0;
 	if (have_vnd && !(vnds = calloc(MAX_VND, sizeof(*vnds))))
 		have_vnd = 0;
 It is worth noting that that small segment is the only use of have_vnd
 anywhere, so why it sets have_vnd = 0 when it fails I have no idea.
 	 if (firstrun) { 
 		/* ... */
 		firstrun = 0;
 block makes sure it is never done again, so that "have_vnd = 0"
 is assigning to a variable that is never examined again.    The
 other have_xxx variables are (well, some of them at least, I did
 not do an exhaustive search) also used elsewhere.
 That is, it sure looks as if the remove_xxx_options() code is really
 intended to remove stuff from the menus, so that other code which
 will not work wiuthout vndconfig  can never later attempt to execute it.
 And I do see ...
         if (have_lvm) { 
                 pm_upddevlist_adv(m, arg, &i,
                     &(pm_upddevlist_adv_t) {MSG_create_cnd, PM_VND_T, &vnds_t_in
 fo, 0, NULL});
                 pm_upddevlist_adv(m, arg, &i,
                     &(pm_upddevlist_adv_t) {MSG_create_vg, PM_LVM_T, &lvms_t_inf
 o, 0,                   
                     &(pm_upddevlist_adv_t) {MSG_create_lv, PM_LVMLV_T, &lv_t_inf
 o, 0, NULL}});  
 and also:
                 case PM_VND_T:
                         return pm_edit(PMV_MENU_END, pm_vnd_edit_menufmt,
                                 pm_vnd_set_value, pm_vnd_check, pm_vnd_init,
                                 NULL, ((part_entry_t *)arg)[m->cursel].dev_ptr, 
 and in pm_menufmt()
                 case PM_VND_T:          
                         pm_vnd_menufmt(m, opt, arg);
 all of which might be related.
 At a minimum, if vnds are needed for lvm config (why?  I thought lvm
 used vg not vnd ?) then perhaps
         have_lvm = binary_available("lvm");
 should become
         have_lvm = have vnd && binary_available("lvm");
 But I suspect that things are just more messed up than that.
 ps: aside: I also don't understand why from msg.mi.en the
 message "Create virtual disk image (VND)" (or from
 "Erstellen Sie virtuelle Disk-Image (VND)" etc) is "message create_cnd"
 instead of "message create_vnd" - looks weird - but that's just a name.

Home | Main Index | Thread Index | Old Index