2000-12-25 01:47:24

by Dave Gilbert (Home)

[permalink] [raw]
Subject: shmat returning NULL with 0 sized segment

Hi,
I'm trying to debug a weird problem with Xine - its screwing up its use
of shared memory for regions I haven't sussed yet. One odd consequence is
that it has apparently successfully managed to allocate a 0 byte chunk of
shared memory; shmat is then called with shmaddr=0 and shmflg=0; the
result of shmat is 0

Is this what shmat is supposed to do in this (admittedly odd)
circumstance? The error behaviour is defined in the man page as returning
-1 on error.

(Linux/Alpha 2.4.0-test8)

Back to trying to find out why it decided to allocate a 0 byte chunk....

Dave


--
---------------- Have a happy GNU millennium! ----------------------
/ Dr. David Alan Gilbert | Running GNU/Linux on | Happy \
\ gro.gilbert @ treblig.org | Alpha, x86, ARM and SPARC | In Hex /
\ ___________________________|___ http://www.treblig.org |________/



2000-12-26 09:59:52

by Christoph Rohland

[permalink] [raw]
Subject: Re: shmat returning NULL with 0 sized segment

Dave Gilbert <[email protected]> writes:

> I'm trying to debug a weird problem with Xine - its screwing up its use
> of shared memory for regions I haven't sussed yet. One odd consequence is
> that it has apparently successfully managed to allocate a 0 byte chunk of
> shared memory; shmat is then called with shmaddr=0 and shmflg=0; the
> result of shmat is 0
>
> Is this what shmat is supposed to do in this (admittedly odd)
> circumstance? The error behaviour is defined in the man page as returning
> -1 on error.

Yes, this should be competely legal and wanted. Some programs use
shmget (..,0,..) to test if the segment is there. Apparently Xine does
this while setting the IPC_CREATE flag. This is legal on 2.4 (wasn't
in 2.2) and gives you a 0 byte segment.

shmat will give you then the legal address 0 like mmap would.

Greetings
Christoph