* shmat() ... is it a bug?
@ 2003-08-29 0:04 Umut Aymakoglu
2003-08-29 0:48 ` David Mosberger
0 siblings, 1 reply; 2+ messages in thread
From: Umut Aymakoglu @ 2003-08-29 0:04 UTC (permalink / raw)
To: linux-ia64
Hi -
Below ,I have 2 small programs which shows a problem in shmat() when the
executable linked with the curses library(libncurses). Has anybody seen
something like this?
a.c --> allocates a shared memory segment and attaches.
b.c --> attaching the allocated shared memory segment using the address
from a.c
thanks,
Umut
a.c:
-----
#include <stdio.h>
#include <sys/types.h>
#include <sys/shm.h>
main()
{
unsigned int segsize = 512*1024;
int shmid;
key_t shmkey = 123456789;
void * adr;
shmid = shmget(shmkey, segsize,IPC_CREAT|0660);
adr = shmat(shmid, 0,0);
printf("shmid = %d adr = %p\n",shmid, adr);
}
b.c:
-----
#include <stdio.h>
#include <stdlib.h>
#include<sys/types.h>
#include <sys/shm.h>
main(int argc, char **argv)
{
void * addr1, * addr2;
key_t shmkey = 123456789;
int shmid;
addr1 = (void*) strtoul(argv[1],NULL,0);
shmid = shmget(shmkey, 0, 0660);
addr2 = shmat(shmid, addr1, 0);
printf("addr2 = %p\n",addr2);
}
%gcc3 -o a a.c
%gcc3 -o b b.c
%gcc3 -o c b.c -lncurses
% ./a
shmid = 313556996 adr = 0x2000000000300000
%./b 0x2000000000300000
addr2 = 0x2000000000300000
%./c 0x2000000000300000
addr2 = 0xffffffffffffffff
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: shmat() ... is it a bug?
2003-08-29 0:04 shmat() ... is it a bug? Umut Aymakoglu
@ 2003-08-29 0:48 ` David Mosberger
0 siblings, 0 replies; 2+ messages in thread
From: David Mosberger @ 2003-08-29 0:48 UTC (permalink / raw)
To: linux-ia64
>>>>> On Thu, 28 Aug 2003 17:04:10 -0700, Umut Aymakoglu <umuta@us.ibm.com> said:
Umut> Below ,I have 2 small programs which shows a problem in
Umut> shmat() when the executable linked with the curses
Umut> library(libncurses). Has anybody seen something like this?
Umut> a.c --> allocates a shared memory segment and attaches.
Umut> b.c --> attaching the allocated shared memory segment using the address
Umut> from a.c
The bug is in the program: you can't assume that a fixed virtual
address is available for mapping. When you link against -lncurses, it
happens to get loaded at the same address as "a" mapped the shared
memory segment. Obviously, you can't have the shared memory segment
and libncurses mapped at the same address, hence the failure.
--david
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-08-29 0:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-29 0:04 shmat() ... is it a bug? Umut Aymakoglu
2003-08-29 0:48 ` David Mosberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox