After running make check on APR trunk after quite a while I detected
that testshm fails on Linux with one failure:
testshm : -Line 254: Error destroying shared memory block (2): No
such file or directory
FAILED 1 of 6
Failed Tests Total Fail Failed %
===================================================
testshm 6 1 16.67%
I am not sure if this is a regression or not or if this is a bug in
APR itself or in the test. The problem seems to be that
rv = apr_shm_destroy(shm2);
line 249 of testshm.c and
rv = apr_shm_destroy(shm);
in line 253 of testshm.c.
unlink the same file. The second time this fails because the file is already
gone:
5114 open("data/apr.testshm.shm", O_WRONLY|O_LARGEFILE) = 3
5114 stat64("data/apr.testshm.shm", {st_dev=makedev(254, 9), st_ino=238840, st_mode=S_IFREG|0640, st_nlink=1,
st_uid=500, st_gid=100, st_blks
ize=4096, st_blocks=8, st_size=4, st_atime=2008/05/23-16:26:28, st_mtime=2008/05/23-16:26:28,
st_ctime=2008/05/23-16:26:28}) = 0
5114 close(3) = 0
5114 shmget(0x109a4f8, 0, 0600) = 11829250
5114 shmctl(11829250, IPC_64|IPC_RMID, 0) = 0
5114 unlink("data/apr.testshm.shm") = 0
5114 open("data/apr.testshm.shm", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0666) =
3
5114 stat64("data/apr.testshm.shm", {st_dev=makedev(254, 9), st_ino=238840, st_mode=S_IFREG|0640, st_nlink=1,
st_uid=500, st_gid=100, st_blks
ize=4096, st_blocks=0, st_size=0, st_atime=2008/05/23-16:26:28, st_mtime=2008/05/23-16:26:28,
st_ctime=2008/05/23-16:26:28}) = 0
5114 shmget(0x109a4f8, 10280, IPC_CREAT|IPC_EXCL|0600) = 11862019
5114 shmat(11862019, 0, 0) = 0xb7f16000
5114 shmctl(11862019, IPC_64|IPC_STAT, 0xbff0e458) = 0
5114 getuid32() = 500
5114 getgid32() = 100
5114 shmctl(11862019, IPC_64|IPC_SET, 0xbff0e458) = 0
5114 write(3, "((\0\0", 4) = 4
5114 close(3) = 0
5114 write(1, "\10\\", 2) = 2
rv = apr_shm_destroy(shm2):
5114 shmctl(11862019, IPC_64|IPC_RMID, 0) = 0
5114 shmdt(0xb7f16000) = 0
5114 unlink("data/apr.testshm.shm") = 0
rv = apr_shm_destroy(shm):
5114 shmctl(11829250, IPC_64|IPC_RMID, 0) = 0
5114 shmdt(0xb7f19000) = 0
5114 unlink("data/apr.testshm.shm") = -1 ENOENT (No such file or directory)
Both shared memory segments have different shm ids but are using the same file.
Regards
RĂ¼diger