From: Subrata M. <su...@li...> - 2009-03-19 07:14:34
|
On Thu, 2009-03-19 at 11:09 +0800, CAI Qian wrote: > Hi, > > The patch named > > [PATCH] aio and nonblocking io in tlibio.c and pipeio.c > http://article.gmane.org/gmane.linux.ltp/6643 > > unfortunately introduced a segmentation fault on PPC64. > > # ./pipeio -T pipeio_1 -c 5 -s 4090 -i 100 -b -f x80 > Segmentation fault > > This is due to the error use of semctl(2) pointed by Jakub Jelinek, > > The testcase is buggy. See man 3p semctl: The semctl() function > provides a variety of semaphore control operations as specified by > cmd. The fourth argument is optional and depends upon the operation > requested. If required, it is of type union semun, which the > application shall explicitly declare: > > union semun { > int val; > struct semid_ds *buf; > unsigned short *array; > } arg; > > If you fix the testcase up, particularly add: > union semun { int val; struct semid_ds *buf; unsigned short int > *array; > }; > and call > if(semctl(sem_id, 0, SETVAL, ((union semun) { .val = 0 })) == -1) > or > union u; > u.val = 0; > if(semctl(sem_id, 0, SETVAL, u) == -1) > it works just fine. > > Signed-off-by: CAI Qian <ca...@cc...> Thanks. Regards-- Subrata > > --- testcases/kernel/ipc/pipeio/pipeio.c.orig 2009-03-19 10:39:00.000000000 +0800 > +++ testcases/kernel/ipc/pipeio/pipeio.c 2009-03-19 10:42:45.000000000 +0800 > @@ -155,7 +155,13 @@ > char *toutput; /* for getenv() */ > int sem_id; > struct sembuf sem_op; > - > + union semun { /* for semctl() */ > + int val; > + struct semid_ds *buf; > + unsigned short int *array; > + } u; > + > + u.val = 0; > format = HEX; > blk_type = NON_BLOCKING_IO; > dir[0] = '\0'; > @@ -443,7 +449,7 @@ > tst_brkm(TBROK, tst_exit, "Couldn't allocate semaphore: %s", strerror(errno)); > } > > - if(semctl(sem_id, 0, SETVAL, 0) == -1) > + if(semctl(sem_id, 0, SETVAL, u) == -1) > tst_brkm(TBROK, tst_exit, "Couldn't initialize semaphore value: %s", strerror(errno)); > > if ( background ) { > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly and > easily build your RIAs with Flex Builder, the Eclipse(TM)based development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Ltp-list mailing list > Ltp...@li... > https://lists.sourceforge.net/lists/listinfo/ltp-list |