A SYSV MSG question
BostonU SysMgr
root%bostonu.csnet at CSNET-RELAY.ARPA
Thu Oct 31 05:47:46 AEST 1985
Sorry, I realized just after that flew out of here that I hadn't
indicated that running out of system resources I think is eliminated.
(tho nothing in my message explained that, sorry.)
Briefly:
process 1 opens a msgq and sets it down to 40 bytes
and loops messages to it till it blocks (it is a 'unique
magic cookie server' to dish out unique id's to other
processes that need them for my application, I write a
bunch till I block just to take advantage of buffering
so several quick requests can be serviced w/o having to
wait for the server process to wake up, it may have been
dormant for hours and thus swapped out or something, just
seemed to make sense.)
process 2 opens a different msgq w/o diddling anything, and
writes bufs to it, typically a few hundred bytes long each. ipcs
indicates the max qbytes to be 16K (the default.)
The problem again: as soon as process 1 blocks (with 40 bytes in the q)
process 2 blocks, even if it's the first write (it printfs to me
"Putting buf on q.." and then never proceeds (it would say "Just put
junk on q" if it finished.) IPC_NOWAIT added makes it return EAGAIN,
but I kinda knew that so that is no help.
If I kill process 1 and ipcrm its q process 2 suddenly wakes up and
proceeds fine, putting lots of messages on the q, if I re-start process 1,
as soon as it blocks process 2 blocks again.
IPCS reveals only 3 queues active on the system, MSGMNI is 8, but
that should cause a failure from MSGGET anyhow, not blocking.
I agree, it sounds like someone ran out of resources, or I misunderstand
something entirely which is more what I am worried about. Everything
I have read (and reason) indicate that the q's should be independant
things up to system resources at which point I can understand a block.
I have to go over all the code with a fine tooth comb, I was just
hoping someone out there might recognize the problem, if it's not something
you have seen before, don't lose any sleep over it, I'll figure it out
if I have to trace the kernel. Ya know, some weird unspoken like the kernel
blocks all jobs in a pgrp if one is blocked on a msgop (tho I highly doubt
it.)
Thanks in advance.
-Barry Shein, Boston University
More information about the Comp.unix.wizards
mailing list