lkml.org 
[lkml]   [2010]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 2.6.35-rc3 deadlocks on semaphore operations
On Sat, 19 Jun 2010, Manfred Spraul wrote:

> What are the semaphore values?
>
> Could you run
> $ ipcs
linux-2.6$ ipcs

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 root 777 135168 0
0x00000000 163841 root 777 135168 2
0x00000000 327682 christoph 600 393216 2 dest
0x00000000 360451 christoph 600 393216 2 dest
0x00000000 393220 christoph 600 393216 2 dest
0x00000000 425989 christoph 600 393216 2 dest
0x00000000 458758 christoph 600 393216 2 dest
0x00000000 491527 christoph 600 393216 2 dest
0x00000000 524296 christoph 600 393216 2 dest
0x00000000 557065 christoph 600 393216 2 dest
0x00000000 589834 christoph 600 393216 2 dest
0x00000000 622603 christoph 600 393216 2 dest
0x00000000 655372 christoph 600 393216 2 dest
0x00000000 688141 christoph 600 393216 2 dest
0x00000000 720910 christoph 600 393216 2 dest
0x00000000 753679 christoph 600 393216 2 dest
0x00000000 786448 christoph 600 4 2 dest
0xcbc384f8 819217 christoph 600 64528 1
0x00000000 851986 christoph 600 4 2 dest
0x00000000 884755 christoph 600 4 2 dest
0x00000000 917524 christoph 600 393216 2 dest
0x00000000 950293 christoph 600 393216 2 dest
0x00000000 5537814 christoph 666 31620 3 dest
0x00000000 5275672 christoph 666 376320 1 dest
0x00000000 5341209 christoph 666 376320 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
0x5e8387d1 65536 christoph 600 1
0xcbc384f8 32769 christoph 600 1
------ Message Queues --------
key msqid owner perms used-bytes messages
0x5e8387cf 65536 christoph 600 0 0
0x5e8387d0 98305 christoph 600 0 0
> $ cat /proc/sysvipc/sem

linux-2.6$ cat /proc/sysvipc/sem
key semid perms nsems uid gid cuid cgid otime ctime
1585678289 65536 600 1 1000 1000 1000 1000 1277138991 1277138892
-876378888 32769 600 1 1000 1000 1000 1000 1277139467 1277138069

> $ ./getall 32768 -v
>
> getall is attached.

linux-2.6$ ~/getall 65536 -v
getall <id> [-v]
found 1 semaphores.
0: 0 (cnt 10 zcnt 0)

linux-2.6$ ~/getall 32769 -v
getall <id> [-v]
found 1 semaphores.
0: 1 (cnt 0 zcnt 0)

The process is "dash". Could have something to do with "fakeroot"

christoph@JTCHITW00139:/proc/27878$ cat maps
00400000-00418000 r-xp 00000000 08:21 253992 /bin/dash
00617000-00618000 r--p 00017000 08:21 253992 /bin/dash
00618000-00619000 rw-p 00018000 08:21 253992 /bin/dash
00619000-0061c000 rw-p 00000000 00:00 0
024b6000-024d7000 rw-p 00000000 00:00 0 [heap]
2b03c4959000-2b03c4979000 r-xp 00000000 08:21 6259766 /lib/ld-2.11.1.so
2b03c4979000-2b03c497b000 rw-p 00000000 00:00 0
2b03c4b79000-2b03c4b7a000 r--p 00020000 08:21 6259766 /lib/ld-2.11.1.so
2b03c4b7a000-2b03c4b7b000 rw-p 00021000 08:21 6259766 /lib/ld-2.11.1.so
2b03c4b7b000-2b03c4b7c000 rw-p 00000000 00:00 0
2b03c4b7c000-2b03c4b85000 r-xp 00000000 08:21 5447953 /usr/lib/libfakeroot/libfakeroot-sysv.so
2b03c4b85000-2b03c4d84000 ---p 00009000 08:21 5447953 /usr/lib/libfakeroot/libfakeroot-sysv.so
2b03c4d84000-2b03c4d85000 r--p 00008000 08:21 5447953 /usr/lib/libfakeroot/libfakeroot-sysv.so
2b03c4d85000-2b03c4d86000 rw-p 00009000 08:21 5447953 /usr/lib/libfakeroot/libfakeroot-sysv.so
2b03c4da4000-2b03c4f1c000 r-xp 00000000 08:21 6260729 /lib/libc-2.11.1.so
2b03c4f1c000-2b03c511c000 ---p 00178000 08:21 6260729 /lib/libc-2.11.1.so
2b03c511c000-2b03c5120000 r--p 00178000 08:21 6260729 /lib/libc-2.11.1.so
2b03c5120000-2b03c5121000 rw-p 0017c000 08:21 6260729 /lib/libc-2.11.1.so
2b03c5121000-2b03c5127000 rw-p 00000000 00:00 0
2b03c5127000-2b03c5129000 r-xp 00000000 08:21 6260732 /lib/libdl-2.11.1.so
2b03c5129000-2b03c5329000 ---p 00002000 08:21 6260732 /lib/libdl-2.11.1.so
2b03c5329000-2b03c532a000 r--p 00002000 08:21 6260732 /lib/libdl-2.11.1.so
2b03c532a000-2b03c532b000 rw-p 00003000 08:21 6260732 /lib/libdl-2.11.1.so
2b03c532b000-2b03c532d000 rw-p 00000000 00:00 0
7fff258b3000-7fff258d5000 rw-p 00000000 00:00 0 [stack]
7fff2598f000-7fff25990000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

/*
* Copyright (C) 1999 by Manfred Spraul.

*

* Redistribution of this file is permitted under the terms of the GNU

* General Public License (GPL)

* $Header: /home/manfred/cvs-tree/manfred/ipcsem/getall.c,v 1.2 2001/02/27 15:44:32 manfred Exp $

*/



#include <sys/sem.h>

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <assert.h>



#define TRUE 1

#define FALSE 0



union semun {
int val;

struct semid_ds *buf;

unsigned short int *array;

struct seminfo* __buf;

};




int main(int argc,char** argv)

{
int id;

int key;

int res;

int nsems;



printf("getall <id> [-v]\n");

if(argc < 2 || argc > 3) {
printf("Invalid parameters.\n");

return 1;

}
if (argc == 3 && strcmp(argv[2], "-v")) {
printf("Invalid parameters.\n");

return 1;

}
key = atoi(argv[1]);

if(key < 0) {
printf("Invalid parameters.\n");

return 1;

}
/* id = semget(key,1,0);
if(id == -1) {
printf(" findkey() failed.\n");

return 1;

} */
id = key;

{
union semun arg;

struct semid_ds info;



arg.buf = &info;

res = semctl(id,0,2,arg);



if(res==-1) {
printf("semctl(2) failed (%d).\n",errno);

return 1;

}
nsems = info.sem_nsems;

printf("found %d semaphores.\n",nsems);

}
{
union semun arg;

unsigned short *pv;

int i;

pv = malloc(sizeof(unsigned short)*nsems);

arg.array = pv;

res = semctl(id,nsems, GETALL, arg);

if(res==-1) {
printf("GETALL failed.\n");

return 1;

}
for(i=0;i<nsems;i++) {
if (argc == 3) {
printf(" %3d: %3d (cnt %3d zcnt %3d)\n",

i, pv[i], semctl(id, i, GETNCNT),

semctl(id, i, GETZCNT));

} else {
if(i%16 == 0)
printf("\n 0x%4.4x:",i);

printf(" %3d",pv[i]);

}
}
printf("\n");

}
return 0;

}
\
 
 \ /
  Last update: 2010-06-21 19:07    [from the cache]
©2003-2011 Jasper Spaans