Note: The bug isn't being filed on the machine that has this issue,
but they have the same debconf version.
A dpkg --configure -a invocation of mine hung after I had a rude
shutdown of a system. When I traced it it turned out that debconf was
hanging.
Specifically dpkg would call:
/bin/sh -x -e /var/lib/dpkg/info/man-db.postinst triggered /usr/share/man
Which would call:
PERL_DL_NONLAZY=1 && export PERL_DL_NONLAZY
/usr/share/debconf/frontend /var/lib/dpkg/info/man-db.postinst triggered /usr/share/man
Which when I ran it under the perl debugger hung on:
Debconf::Log::debug(/usr/share/perl5/Debconf/Log.pm:23):
23: if ($log && $type =~ /$log/) {
Debconf::ConfModule::process_command(/usr/share/perl5/Debconf/ConfModule.pm:134):
134: if ($ret=~/\n/) {
Debconf::ConfModule::process_command(/usr/share/perl5/Debconf/ConfModule.pm:139):
139: return $ret;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:75):
75: my $w=$this->write_handle;
Debconf::ConfModule::CODE(0xa0fb678)(/usr/share/perl5/Debconf/ConfModule.pm:648):
648: my $this=shift;
Debconf::ConfModule::CODE(0xa0fb678)(/usr/share/perl5/Debconf/ConfModule.pm:650):
650: return $this->{$field} unless @_;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:76):
76: print $w $ret."\n";
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:77):
77: return '' unless length $ret;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:78):
78: return 1;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:69):
69: my $this=shift;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:71):
71: my $r=$this->read_handle;
Debconf::ConfModule::CODE(0xa0fb598)(/usr/share/perl5/Debconf/ConfModule.pm:648):
648: my $this=shift;
Debconf::ConfModule::CODE(0xa0fb598)(/usr/share/perl5/Debconf/ConfModule.pm:650):
650: return $this->{$field} unless @_;
Debconf::ConfModule::communicate(/usr/share/perl5/Debconf/ConfModule.pm:72):
72: $_=<$r> || return $this->finish;
Looks like something that could be solved by having ->read_handle
return a non-blocking handle, but I haven't looked.