OpenSolaris

Printable Version Enter a New Search
Bug ID 6708164
Synopsis sys_semid only needs to be removed once
State 10-Fix Delivered (Fix available in build)
Category:Subcategory benchmarks:filebench
Keywords
Responsible Engineer Eric Kustarz
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_92
Fixed In snv_92
Release Fixed solaris_nevada(snv_92)
Related Bugs
Submit Date 28-May-2008
Last Update Date 18-June-2008
Description
I was seeing:
heavy# /usr/benchmarks/filebench/bin/filebench oltp
...

IO Summary:      866151 ops 7145.6 ops/s, (3566/3544 r/w)  14.1mb/s,    137us cpu/op,   3.7ms latency
101182: 136.958: Stats dump to file 'stats.seqread1m.out'
101182: 136.958: in statsdump stats.seqread1m.out
101182: 136.958: Shutting down processes
101376: 138.313: semop post failed: Identifier removed
101298: 138.313: semop post failed: Identifier removed
101243: 138.313: semop post failed: Identifier removed
101376: 138.313: shadow-1: flowop shadow-post-dbwr-1 failed
101292: 138.313: semop post failed: Identifier removed
101352: 138.313: semop post failed: Identifier removed
101285: 138.313: semop post failed: Identifier removed
101298: 138.314: shadow-1: flowop shadow-post-dbwr-1 failed

....

This was using oltp.prof:
DEFAULTS {
   runtime = 120;
       dir = /d;
       stats = /tmp;
   filesystem = zfs;
   description = "dsync zfs";
}

CONFIG seqread1m {
   function = generic;
   personality = oltp;
}


Problem is that each sempost flowop is trying to remove the global 'shm_sys_semid':
static void
flowoplib_semblock_destruct(flowop_t *flowop)
{
#ifdef HAVE_SYSV_SEM
        ipc_semidfree(flowop->fo_semid_lw);
        ipc_semidfree(flowop->fo_semid_hw);
        (void) semctl(filebench_shm->shm_sys_semid, 0, IPC_RMID);
        filebench_shm->shm_sys_semid = -1;
#else
        sem_destroy(&flowop->fo_sem);
#endif /* HAVE_SYSV_SEM */
}


The semaphore is initially created in ipc_init() and should be cleaned up instead in
ipc_cleanup().
Work Around
N/A
Comments
N/A