Bug 601622

Summary: gdbm_open failed, Can't be writer
Product: Red Hat Enterprise Linux 6 Reporter: Michal Nowak <mnowak>
Component: gdbmAssignee: Karel Klíč <kklic>
Status: CLOSED NOTABUG QA Contact: BaseOS QE - Apps <qe-baseos-apps>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.0CC: ohudlick, rvokal
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-06-09 14:20:20 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 581524    

Description Michal Nowak 2010-06-08 10:45:25 UTC
Description of problem:

Test case from upstream sources `testgdbm.c` regressed in gdbm-1.8.0-35.el6 (-36.el6 still broken):

[root@auto-s390-001 tmp.6njxZ0a6pV]# gcc -lgdbm testgdbm.c -o testgdbm && ./testgdbm
/tmp/ccmrUJ7e.o: In function `main':
testgdbm.c:(.text+0xa8a): warning: the `gets' function is dangerous and should not be used.
gdbm_open failed, Can't be writer

I experienced this regression on s390x & ppc64, x86s are both OK.

Version-Release number of selected component (if applicable):

gdbm-1.8.0-35.el6

Additional info:

This is the change

http://cvs.devel.redhat.com/cgi-bin/cvsweb.cgi/rpms/gdbm/RHEL-6/gdbm.spec.diff?r1=1.26;r2=1.27;f=h

BROKEN:

20741 execve("./testgdbm", ["./testgdbm"], [/* 30 vars */]) = 11
20741 brk(0)                            = 0x80005000
20741 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000002000
20741 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000003000
20741 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
20741 open("/etc/ld.so.cache", O_RDONLY) = 3
20741 fstat(3, {st_mode=S_IFREG|0644, st_size=76703, ...}) = 0
20741 mmap(NULL, 76703, PROT_READ, MAP_PRIVATE, 3, 0) = 0x20000005000
20741 close(3)                          = 0
20741 open("/usr/lib64/libgdbm.so.2", O_RDONLY) = 3
20741 read(3, "\177ELF\2\2\1\0\0\0\0\0\0\0\0\0\0\3\0\26\0\0\0\1\0\0\0\0\0\0\32\274"..., 832) = 832
20741 fstat(3, {st_mode=S_IFREG|0755, st_size=30320, ...}) = 0
20741 mmap(NULL, 32552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x20000018000
20741 mmap(0x2000001f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x2000001f000
20741 close(3)                          = 0
20741 open("/lib64/libc.so.6", O_RDONLY) = 3
20741 read(3, "\177ELF\2\2\1\0\0\0\0\0\0\0\0\0\0\3\0\26\0\0\0\1\0\0\0J\246nI\344"..., 832) = 832
20741 fstat(3, {st_mode=S_IFREG|0755, st_size=2042728, ...}) = 0
20741 mmap(0x4aa66c4000, 1783168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4aa66c4000
20741 mmap(0x4aa686e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a9000) = 0x4aa686e000
20741 mmap(0x4aa6873000, 17792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4aa6873000
20741 close(3)                          = 0
20741 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000020000
20741 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000021000
20741 mprotect(0x4aa686e000, 16384, PROT_READ) = 0
20741 mprotect(0x4aa66bf000, 4096, PROT_READ) = 0
20741 munmap(0x20000005000, 76703)      = 0
20741 brk(0)                            = 0x80005000
20741 brk(0x80026000)                   = 0x80026000
20741 open("junk.gdbm", O_RDWR|O_CREAT, 0664) = 3
20741 fstat(3, {st_mode=S_IFREG|0644, st_size=12288, ...}) = 0
20741 fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = -1 EAGAIN (Resource temporarily unavailable)
20741 close(3)                          = 0
20741 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
20741 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000005000
20741 write(1, "gdbm_open failed, Can't be write"..., 34) = 34
20741 exit_group(2)                     = ?


OK:

20787 execve("./testgdbm", ["./testgdbm"], [/* 30 vars */]) = 11
20787 brk(0)                            = 0x80005000
20787 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000002000
20787 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000003000
20787 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
20787 open("/etc/ld.so.cache", O_RDONLY) = 3
20787 fstat(3, {st_mode=S_IFREG|0644, st_size=76703, ...}) = 0
20787 mmap(NULL, 76703, PROT_READ, MAP_PRIVATE, 3, 0) = 0x20000005000
20787 close(3)                          = 0
20787 open("/usr/lib64/libgdbm.so.2", O_RDONLY) = 3
20787 read(3, "\177ELF\2\2\1\0\0\0\0\0\0\0\0\0\0\3\0\26\0\0\0\1\0\0\0\0\0\0\32\274"..., 832) = 832
20787 fstat(3, {st_mode=S_IFREG|0755, st_size=30264, ...}) = 0
20787 mmap(NULL, 32496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x20000018000
20787 mmap(0x2000001f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x2000001f000
20787 close(3)                          = 0
20787 open("/lib64/libc.so.6", O_RDONLY) = 3
20787 read(3, "\177ELF\2\2\1\0\0\0\0\0\0\0\0\0\0\3\0\26\0\0\0\1\0\0\0J\246nI\344"..., 832) = 832
20787 fstat(3, {st_mode=S_IFREG|0755, st_size=2042728, ...}) = 0
20787 mmap(0x4aa66c4000, 1783168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4aa66c4000
20787 mmap(0x4aa686e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a9000) = 0x4aa686e000
20787 mmap(0x4aa6873000, 17792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4aa6873000
20787 close(3)                          = 0
20787 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000020000
20787 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000021000
20787 mprotect(0x4aa686e000, 16384, PROT_READ) = 0
20787 mprotect(0x4aa66bf000, 4096, PROT_READ) = 0
20787 munmap(0x20000005000, 76703)      = 0
20787 brk(0)                            = 0x80005000
20787 brk(0x80026000)                   = 0x80026000
20787 open("junk.gdbm", O_RDWR|O_CREAT, 0664) = 3
20787 fstat(3, {st_mode=S_IFREG|0644, st_size=12288, ...}) = 0
20787 flock(3, LOCK_EX|LOCK_NB)         = 0
20787 read(3, "\23W\232\316\0\0\20\0\0\0\0\0\0\0\20\0\0\0\20\0\0\0\0\t\0\0\20\0\0\0\0\246"..., 72) = 72
20787 read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4024) = 4024
20787 lseek(3, 4096, SEEK_SET)          = 4096
20787 read(3, "\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0"..., 4096) = 4096
20787 brk(0x80047000)                   = 0x80047000
20787 brk(0x80068000)                   = 0x80068000
20787 brk(0x80089000)                   = 0x80089000
20787 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
20787 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000005000
20787 write(1, "\n", 1)                 = 1
20787 write(1, "Welcome to the gdbm test program"..., 52) = 52
20787 write(1, "\n", 1)                 = 1
20787 fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
20787 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x20000006000
20787 write(1, "com -> ", 7)            = 7
20787 read(0, "", 1024)                 = 0
20787 --- SIGINT (Interrupt) @ 0 (0) ---
20787 +++ killed by SIGINT +++