Hello, I'm currently performing a dist upgrade to F12 using rpm 4.7.2. The rpm upgrade process was stuck and I was able to produce multiple core dumps and compare them. Here's one of them: #0 0x0033690e in __read_nocancel () from ./lib/libpthread.so.0 #1 0x003f1c5b in read (cookie=<value optimized out>, buf=<value optimized out>, count=<value optimized out>) at /usr/include/bits/unistd.h:45 #2 fdRead (cookie=<value optimized out>, buf=<value optimized out>, count=<value optimized out>) at rpmio.c:310 #3 0x003f1e20 in ufdRead (cookie=<value optimized out>, buf=<value optimized out>, count=<value optimized out>) at rpmio.c:576 #4 0x0046db71 in _IO_cookie_read () from ./lib/libc.so.6 #5 0x00478cfb in _IO_new_file_underflow () from ./lib/libc.so.6 #6 0x0047c0ba in __underflow () from ./lib/libc.so.6 #7 0x0047c22a in _IO_default_xsgetn_internal () from ./lib/libc.so.6 #8 0x0047a9a8 in _IO_sgetn_internal () from ./lib/libc.so.6 #9 0x0046e03e in fread () from ./lib/libc.so.6 #10 0x003f0742 in fread (buf=<value optimized out>, size=<value optimized out>, nmemb=<value optimized out>, fd=<value optimized out>) at /usr/include/bits/stdio2.h:287 #11 Fread (buf=<value optimized out>, size=<value optimized out>, nmemb=<value optimized out>, fd=<value optimized out>) at rpmio.c:1563 #12 0x003fc6e9 in rpmDoDigest (algo=<value optimized out>, fn=<value optimized out>, asAscii=<value optimized out>, digest=<value optimized out>, fsizep=<value optimized out>) at rpmfileutil.c:202 #13 0x006a2476 in handleOverlappedFiles (ts=<value optimized out>, ht=<value optimized out>, p=<value optimized out>, fi=<value optimized out>) at transaction.c:341 #14 0x006a3ca1 in rpmtsPrepare (ts=<value optimized out>) at transaction.c:1066 #15 0x006a4621 in checkProblems (ts=<value optimized out>, okProbs=<value optimized out>, ignoreSet=<value optimized out>) at transaction.c:827 #16 rpmtsRun (ts=<value optimized out>, okProbs=<value optimized out>, ignoreSet=<value optimized out>) at transaction.c:1175 #17 0x006930df in rpmcliTransaction (ts=<value optimized out>, ia=<value optimized out>, numPackages=<value optimized out>) at rpminstall.c:287 #18 0x00694949 in rpmInstall (ts=<value optimized out>, ia=<value optimized out>, fileArgv=<value optimized out>) at rpminstall.c:518 #19 0x0804ab3b in main (argc=<value optimized out>, argv=<value optimized out>) at rpmqv.c:752 I added debug output before the rpmDoDigest() call in transaction.c and discovered rpm tried to be very clever: DEBUG: Before rpmDoDigest with filename: /etc/logrotate.d/cron DEBUG: Before rpmDoDigest with filename: /etc/cron.daily/0anacron DEBUG: Before rpmDoDigest with filename: /etc/cron.monthly/0anacron ... DEBUG: Before rpmDoDigest with filename: /var/named/chroot/dev/null DEBUG: Before rpmDoDigest with filename: /var/named/chroot/dev/random -> Compute the digest of /dev/random :o) Deleting the "random" file before the upgrade solved the issue. Maybe rpm shouldn't compute digests for special device files? Strangely /dev/null wasn't a problem. Cheers, Thomas _______________________________________________ Rpm-list mailing list Rpm-list@xxxxxxxxxxxxx http://lists.rpm.org/mailman/listinfo/rpm-list