Thanks for the pointers, unfortunately I've got a problem with the Shared
> cache in that I need IPC::ShareLite, no problem, except it won't test ok,
> I get:
>
> PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib
> -I/usr/lib/perl5/i386-linux -I/usr/lib/perl5 test.pl
> 1..8
> ok 1
> ok 2
> IPC::ShareLite store() error: Identifier removed at test.pl line 33
It took me forever, but I finally figured out HOW to deal w/ share memory!
As in, what is the status, what can I change, how can I make garbage go
away?
On Linux (and Solaris, probably others) there is a program called ipcs(8).
This will give you a listing of all shared memory segments, message queues,
and semaphore arrays.
An example (Linux):
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00280267 1 root 644 1048576 0
------ Semaphore Arrays --------
key semid owner perms nsems status
0x00280269 0 root 666 14
------ Message Queues --------
key msqid owner perms used-bytes messages
NOW, if I wanted to make these go away (AFTER checking that nothing critical
is actually USING these segments!), I would use the companion program
ipcrm(8).
ipcrm shm 1
ipcrm sem 0
the shm 1 line corresponds to the lines above that show shmid 1 under shared
memory. Likewise, the sem 0 is for the semaphore w/ semid 0. See the
manpages!
Anyway, whenever I've seen that message, it means that something is barfing
in shared memory. Usually, something got left behind instead of being
cleaned up. A quick removal usually takes care of it. BUT!!! Don't do
something silly (and dangerous) like deleting ORACLE's shared memory
segments, while it's running. Fortunately, ipcs(8) shows the owners of
shared memory segments, so this should be reasonable simple to identify.
Hope this helps!
(is this OT? :-)
L8r,
Rob