Hi,

After some investigation, I finally found what was happening in this
bug. It follows this sequence :

 - template_db_new(), question_db_new(). At this point, both dbs are
empty.
 - frontend_new() creates a new frontend as g_frontend, based on the
--frontend parameter or config file. It tries to set debconf/frontend,
which doesn't exist yet.
 - g_config->methods.load() loads the database, including
debconf/frontend.
 - first call to go() (int commands.c), reading debconf/frontend, which
is different from the current one. Therefore it shuts it down, and frees
it (it is the one g_frontend points to, remember).
 - Things go on, until the call to cleanup(), which tries to shutdown,
and free, g_frontend, for the second time. Hence the segfault. This
would also happen when dpkg-reconfigure-ing several packages.

This points to several issues :
 - The templates and questions dbs should be loaded *before* the call to
frontend_new(). It would avoid the unexpected change of frontend. The
patch is trivial for that.
 - The change of frontend while running is not handled gracefully. I
believe the safest solution would be to update g_frontend with
confmodule->frontend in runconfmodule().

I have a patch ready for all this, and will push things in git by
tomorrow hopefully.

Regis




-- 
To UNSUBSCRIBE, email to debian-boot-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/1308695022.8499.35.camel@x200s

Reply via email to