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

Reply via email to