rpm-5.4.10-22.i686 loops forever when installing ntpd-4.2.6p5-5.i686.rpm

Jeffrey Johnson n3npq at me.com
Mon Oct 22 22:22:10 CEST 2012


On Oct 22, 2012, at 4:01 PM, Jeffrey Johnson wrote:

> 
> On Oct 22, 2012, at 2:57 PM, Elan Ruusamäe wrote:
> 
>> On 10/22/2012 05:58 PM, Jeffrey Johnson wrote:
>>> For a suspected database error in the Conflictname index,
>>> then comparing the outputs with
>>> 
>>> /usr/lib/rpm/macros:%_dbi_config_3_Conflictname     %{_dbi_btconfig} %{?_bt_dupsort} debug
>>> 
>>> may be informative. The access patterns SHOULD be similar.
>> first one that loops, second one that finishes fine
>> 
>> $ rpm -D '_dbi_config_3_Conflictname     %{_dbi_btconfig} %{?_bt_dupsort} debug' -ihv ntpd-4.2.6p5-5.i686.rpm --test 2>ntpd-conflictdb-debug-morpheus.txt
>> ^C
>> 
>> -> 6.3M
>> http://carme.pld-linux.org/~glen/ntpd-conflictdb-debug-morpheus.txt
>> 

And here is the different/broken behavior (see the DB_NEXT_DUP):

<-- db3open(0x9694568,Conflictname,0xbffaad3c) dbi 0x969cb20 rc 0 
	flags: 0x500<AUTO_COMMIT,RDONLY>
<-- db3associate(0x9694c00(Packages),0x969cb20(Conflictname),0xb75ffe89,0x0) rc 0 
	flags: 0x0
--> rpmmiInit(0x9694568, Conflictname, 0x969b3a0[0]="config(ntpd)") dbi 0x969cb20 mi 0x9699ce8
--> rpmmiNext(0x9699ce8) dbi 0x969cb20(Conflictname)
<-- db3copen(0x969cb20,(nil),0x9699d04,0x0) dbc 0x969d570 0x0 rc 0
<-- db3cget(0x969cb20,0x969d570,0xbffaad48,0xbffaad80,0x1a) rc -30988 
	flags: DB_SET 
	  key: 0x969ccc8[12]	0x0	"config(ntpd)"
	 data: (nil)[0]	0x800<USERMEM>
<-- rpmmiGet(0x969cb20(Conflictname),0x969d570,0xbffaad48,0xbffaad80,0x1a) rc -30988
--> rpmmiInit(0x9694568, Conflictname, 0x969ab40[0]="ntp") dbi 0x969cb20 mi 0x9699ce8
--> rpmmiNext(0x9699ce8) dbi 0x969cb20(Conflictname)
<-- db3copen(0x969cb20,(nil),0x9699d04,0x0) dbc 0x969d8b0 0x0 rc 0
<-- db3cget(0x969cb20,0x969d8b0,0xbffaad48,0xbffaad80,0x1a) rc -30999 
	flags: DB_SET 
	  key: 0x969d888[3]	0x0	"ntp"
	 data: (nil)[10316]	0x800<USERMEM>
<-- db3cpget(0x969cb20,0x969d8b0,0xbffaad48,0xbffaad64,0xbffaad80,0x1a) rc 0 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This line SHOULD have returned "… rc -30988" (aka DB_NOTFOUND) if machines were "identical".
============================================================================
	flags: DB_SET 
	  key: 0x969d888[3]	0x0	"ntp"
	 pkey: 0x969d898[4]	0x0	0x000001ab
	 data: 0xb76f3000[10316]	0x800<USERMEM>
<-- rpmmiGet(0x969cb20(Conflictname),0x969d8b0,0xbffaad48,0xbffaad80,0x1a) rc 0
--> rpmmiNext(0x9699ce8) dbi 0x969cb20(Conflictname)
<-- db3cget(0x969cb20,0x969d8b0,0xbffaad48,0xbffaad80,0x11) rc -30988 
	flags: DB_NEXT_DUP 
	  key: (nil)[0]	0x0
	 data: (nil)[0]	0x800<USERMEM>
<-- rpmmiGet(0x969cb20(Conflictname),0x969d8b0,0xbffaad48,0xbffaad80,0x11) rc -30988
This may be a slightly different manifestation of the DB_BUFFER_SMALL issue in this thread
(and in archives) but that's just a guess:
	http://rpm5.org/community/rpm-devel/5390.html

While bisecting, you need to find the "other" package that has
	Provides: ntp
and removing (or otherwise "fixing") will (I claim) provide you
with 2 "working" (and "sufficiently similar") machines. That isn't
a "fix" per se, but does stop the clock on repairing your machine(s).

(aside)
I'm perfectly prepared to drill out the db-5.3.x DB_BUFFER_SMALL issue if/when I can actually
capture a reproducer on some machine. It will take about a weekend of
adding printf's to find and understand the change in behavior in db-5.3.x
(which isn't very hard, just rather tedious).

The band-aid in use in PLD (and @windriver and in Mandriva/ROSA)
is kinda creepy (imho).


73 de Jeff	"I can't fix what I can't see." no matter what



More information about the pld-devel-en mailing list