rpm segfault on xfs with 64bit inodes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
RPM |
In Progress
|
Medium
|
Jeff Johnson | ||
PLD Linux |
Fix Committed
|
Undecided
|
Jan Rękorajski |
Bug Description
# rpm -q rpm
rpm-5.4.
# wget http://
# rpm -Uhv reviewboard-
...
D: fini 100644 2 ( 0, 0) 0 /usr/share/
D: fini 100644 2 ( 0, 0) 2215 /usr/share/
D: fini 100644 2 ( 0, 0) 0 /usr/share/
D: fini 100644 2 ( 0, 0) 1290 /usr/share/
Segmentation fault
after trying different versions. i see that temp files are left around:
23:41:14 root[load: 0.30]@blodnatt /tmp# find /usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
/usr/share/
i.e some of them caused by same package, just different build, and crashes in different filename printed
http://
tags: | added: rpm5 |
summary: |
- rpm segfault installing reviewboard-1.7.2-0.5.noarch.rpm + rpm segfault on xfs with 64bit inodes |
Changed in rpm: | |
status: | New → Incomplete |
status: | Incomplete → In Progress |
importance: | Undecided → Medium |
assignee: | nobody → Jeff Johnson (n3npq) |
milestone: | none → 5.4.15 |
tags: | added: pld rpm xfs |
gdb trace
Program received signal SIGSEGV, Segmentation fault. entry=0x64e990, stage=IOSM_ PKGINSTALL) at fsm.c:1667 entry=IOSM_ PKGINSTALL, afmt=<optimized out>, _ts=_ts@ entry=0x6534f0, _fi@entry= 0x651c20, cfd=<optimized out>, archiveSize= archiveSize@ entry=0x0, failedFile= failedFile@ entry=0x6c63a8) entry=0x6c62a0, stage=stage@ entry=PSM_ PKGINSTALL) at psm.c:2910 es=0, ignoreSet= RPMPROB_ FILTER_ NONE, ts=0x6534f0) at transaction.c:1848 RPMPROB_ FILTER_ NONE) at transaction.c:2263 entry=0x6534f0, okProbs= okProbs@ entry=0x654810, ignoreSet= <optimized out>) entry=0x6534f0, ia=ia@entry= 0x7ffff7b95900 <rpmIArgs>, argv=<optimized out>) nSkipped( fsm->action) ) python2. 7/site- packages/ reviewboard/ hostingsvcs/ ", a\275s\ 300@S\213W- \257\230\ 212",
0x00007ffff79441bf in fsmCommitLinks (fsm=0x64e990) at fsm.c:1358
1358 for (i = 0; i < fsm->li->nlink; i++) {
(gdb) bt
#0 0x00007ffff79441bf in fsmCommitLinks (fsm=0x64e990) at fsm.c:1358
#1 fsmStage (fsm=0x64e990, stage=<optimized out>) at fsm.c:2058
#2 0x00007ffff794277a in fsmStage (fsm=fsm@
#3 0x00007ffff7945395 in fsmSetup (_fsm=0x64e990, goal=goal@
_fi=
at fsm.c:739
#4 0x00007ffff794f806 in rpmpsmStage (psm=0x6c62a0, stage=PSM_PROCESS) at psm.c:2629
#5 0x00007ffff794f32c in rpmpsmStage (psm=psm@
#6 0x00007ffff797d997 in rpmtsProcess (rollbackFailur
#7 _rpmtsRun (ts=0x6534f0, okProbs=0x0, ignoreSet=
#8 0x00007ffff796f5aa in rpmcliInstallRun (ts=ts@
at rpminstall.c:360
#9 0x00007ffff7970270 in rpmcliInstall (ts=ts@
at rpminstall.c:756
#10 0x00000000004031db in main (argc=<optimized out>, argv=<optimized out>) at ./rpmqv.c:996
(gdb)
(gdb) l
1353 for (fsm->li = fsm->links; fsm->li; fsm->li = fsm->li->next) {
1354 if (fsm->li->sb.st_ino == st->st_ino && fsm->li->sb.st_dev == st->st_dev)
1355 break;
1356 }
1357
1358 for (i = 0; i < fsm->li->nlink; i++) {
1359 if (fsm->li->filex[i] < 0) continue;
1360 fsm->ix = fsm->li->filex[i];
1361 rc = fsmNext(fsm, IOSM_MAP);
1362 if (!iosmFileActio
(gdb)
(gdb) p *fsm
$1 = {
path = 0x0,
lpath = 0x0,
opath = 0x0,
digestlen = 16,
dirName = 0x65ae7c "/usr/share/
baseName = 0x68b538 "versionone.pyo",
fdigest = 0x0,
digest = 0x66a100 "\030ce(
fcontext = 0x0,
fflags = 0,
action = FA_CREATE,
goal = IOSM_PKGINSTALL,
stage = IOSM_FINI,
nstage = IOSM_FINI,
sb = {
st_dev = 64768,
st_ino = 304633500,
st_nlink = 2,
st_mode = 33188,
st_uid = 0,
st_gid = 0,
__pad0 = 0,
st_rdev = 0,
st_size = 1290,
st_blksize = 0,
st_blocks = 0,
st_atim = {
tv_sec = 0,
tv_nsec = 0
},
st_mtim = {
tv_sec = 1359060247,
tv_nsec = 0
},
st_ctim = {
tv_sec = 0,
tv_nsec = 0
},
__unused = {0,
0,
0}
},
osb = {
st_dev = 0,
st_ino = 0,
st_nlink = 0,
st_mode = 0,
st_uid = 0,
st_gid = 0,
__pad0 = 0,
st_rdev = 0,
st_size = 0,
---Type <return> to continue, or q <return> to quit---
st_blksize = 0,
st_blocks = 0,
st_atim = {
tv_sec = 0,
tv_nsec = 0
},
st_mtim = {
tv_sec = 0,
tv_nsec = ...