public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* 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