<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
<font size="+1"><tt>Hi CLUEbies,<br>
<br>
I have some processes that maintain a 340 byte data structure in memory
as a shared memory semaphore.&nbsp; I'd like to be able to grab the bytes
out of memory from time to time, without the cooperation or knowledge
of the processes that are reading &amp; writing the data.&nbsp; We suspect
some sort of weird data corruption and I'd like to be able to produce
sort of a time-stamped "packet trace" of the semaphore data so we can
compare the values in memory with the expected values.&nbsp; Also what
happens is one of the processes crashes from time to time for no
apparent reason and we want to read the semaphore data out of memory at
the moment it crashes.<br>
<br>
This might be a n00b question but a google search wasn't helpful and so
I thought someone out there in CLUE-land might know.<br>
<br>
Here is ipcs output:<br>
<br>
[root /usr/sbin]# ipcs<br>
<br>
------ Shared Memory Segments --------<br>
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shmid&nbsp;&nbsp;&nbsp;&nbsp; owner&nbsp;&nbsp;&nbsp;&nbsp; perms&nbsp;&nbsp;&nbsp;&nbsp; bytes&nbsp;&nbsp;&nbsp;&nbsp; nattch&nbsp;&nbsp;&nbsp; status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
0x00000000 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1808&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
0x00000000 32769&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 340&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
0x00000000 65538&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1728012&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
0x00000000 98307&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1220&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
dest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
------ Semaphore Arrays --------<br>
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semid&nbsp;&nbsp;&nbsp;&nbsp; owner&nbsp;&nbsp;&nbsp;&nbsp; perms&nbsp;&nbsp;&nbsp;&nbsp; nsems&nbsp;&nbsp;&nbsp;&nbsp; status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
0x00000000 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
------ Message Queues --------<br>
key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msqid&nbsp;&nbsp;&nbsp;&nbsp; owner&nbsp;&nbsp;&nbsp;&nbsp; perms&nbsp;&nbsp;&nbsp;&nbsp; used-bytes&nbsp; messages&nbsp;&nbsp;&nbsp; <br>
<br>
We want shmid 32769 with 340 bytes.&nbsp; How can I get it?<br>
<br>
[ userid ]$ cd /proc/sysvipc/<br>
[ userid /proc/sysvipc]$ ls -al<br>
total 0<br>
dr-xr-xr-x&nbsp;&nbsp;&nbsp; 2 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 May 12 12:00 .<br>
dr-xr-xr-x&nbsp;&nbsp; 54 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 May 11 09:35 ..<br>
-r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 May 12 12:00 msg<br>
-r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 May 12 12:00 sem<br>
-r--r--r--&nbsp;&nbsp;&nbsp; 1 root&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 May 12 12:00 shm<br>
[logger@mlogger /proc/sysvipc]$ cat sem<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; semid perms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nsems&nbsp;&nbsp; uid&nbsp;&nbsp; gid&nbsp; cuid&nbsp; cgid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
otime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctime<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; 600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0
1305223243 1305149770<br>
[logger@mlogger /proc/sysvipc]$ cat shm<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shmid perms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; size&nbsp; cpid&nbsp; lpid nattch&nbsp;&nbsp; uid&nbsp;&nbsp; gid&nbsp;
cuid&nbsp; cgid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; atime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dtime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctime<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1808&nbsp;&nbsp; 580&nbsp;&nbsp; 670&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 1305150844 1305151313 1305149770<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32769&nbsp; 1600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 340&nbsp;&nbsp; 580&nbsp;&nbsp; 670&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 1305150844 1305151313 1305149770<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65538&nbsp; 1600&nbsp;&nbsp;&nbsp; 1728012&nbsp;&nbsp; 580&nbsp;&nbsp; 670&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 1305150844 1305151313 1305149770<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 98307&nbsp; 1600&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1220&nbsp;&nbsp; 580&nbsp; 1104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0 1305150844 1305150844 1305149770<br>
[logger@mlogger /proc/sysvipc]$ cat msg<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msqid perms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cbytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qnum lspid lrpid&nbsp;&nbsp; uid&nbsp;&nbsp;
gid&nbsp; cuid&nbsp; cgid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rtime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ctime<br>
<br>
It seems I might just be able to dd the relevant bytes out of
/proc/kcore but I don't know where to find these bytes.&nbsp; Yes I suppose
I could do it the hard way and try to dump the whole 512MB kcore to a
file and then xxd and grep through it but that is inelegant.&nbsp; Is there
an elegant way to get NUMBEROFBYTESTOSKIP given what I know about the
semaphore from the SYSVIPC (system V inter-process communication)
information so I can do something like this:<br>
<br>
dd if=/proc/kcore skip=NUMBEROFBYTESTOSKIP bs=340 count=1 of=/tmp/dump<br>
<br>
Thanks,<br>
Jim<br>
</tt></font>
<pre class="moz-signature" cols="72">-- 
Jim Ockers, P.Eng. (<a moz-do-not-send="true"
 class="moz-txt-link-abbreviated" href="mailto:ockers@ockers.net">ockers@ockers.net</a>)
Contact info: <a moz-do-not-send="true" class="moz-txt-link-freetext"
 href="http://www.ockers.net/msi.html">http://www.ockers.net/msi.html</a>

</pre>
</body>
</html>