[M3devel] 5.8.6 LINUXLIBC6 breakage, kernel 2.6.23, glibc-2.6-4

Mika Nystrom mika at async.caltech.edu
Tue Apr 19 04:30:58 CEST 2011


If you or Tony could describe roughly what you think needs to be done
I'd be happy to look into it.

The basic problem is that a decision that's made/described in
m3core/thread/m3makefile needs to someone find its way to controlling
what C code gets compiled elsewhere in the system.  Or maybe there should
be an indirection into the thread library to pick up pthread_atfork (or not).

But then again you still haven't explained why you made the user threads use
pthread_atfork.  I just remove it from my installations, but then again I'm
not trying to run CVSup so I don't know if it breaks that program to do so.

     Mika

Jay K writes:
>--_3dd397d4-ac1d-4148-a9ff-059d27dd794a_
>Content-Type: text/plain; charset="iso-8859-1"
>Content-Transfer-Encoding: quoted-printable
>
>
>> The following code from RTProcessC.c ensures that it is neeeded on every =
>Unix except
>> > /* NOTE: Even userthreads now depends
>> > * on availability of pthreads.
>> > * This can be fixed if need be.
>> > */
>
>=20
>Ok=2C "we" should probably go ahead and fix that.
>I'll try to=2C but no promises=2C sorry.
>=20
> - Jay
>=20
>> From: hosking at cs.purdue.edu
>> Date: Mon=2C 18 Apr 2011 18:11:26 -0400
>> To: mika at async.caltech.edu
>> CC: m3devel at elegosoft.com
>> Subject: Re: [M3devel] 5.8.6 LINUXLIBC6 breakage=2C kernel 2.6.23=2C glib=
>c-2.6-4
>>=20
>> Probably unnecessary=2C given that I think there is another entry point t=
>o forking a process (I forget where) in the thread-specific portion of m3co=
>re. In which case the necessary work might be done there?
>>=20
>> On Apr 18=2C 2011=2C at 2:45 PM=2C Mika Nystrom wrote:
>>=20
>> > Tony Hosking writes:
>> > ...
>> >> pthread_atfork should not be needed under user threads.
>> > ...
>> >=20
>> > The following code from RTProcessC.c ensures that it is neeeded on ever=
>y Unix except
>> > FreeBSD before 6. The comment is from the checked-in source file.
>> >=20
>> > /* NOTE: Even userthreads now depends
>> > * on availability of pthreads.
>> > * This can be fixed if need be.
>> > */
>> >=20
>> > INTEGER
>> > __cdecl
>> > RTProcess__RegisterForkHandlers(
>> > ForkHandler prepare=2C
>> > ForkHandler parent=2C
>> > ForkHandler child)
>> > {
>> > /* FreeBSD < 6 lacks pthread_atfork. Would be good to use autoconf.
>> > * VMS lacks pthread_atfork? Would be good to use autoconf.
>> > * Win32 lacks pthread_atfork and fork. OK.
>> > *
>> > * As well=2C for all Posix systems=2C we could implement
>> > * atfork ourselves=2C as long as we provide a fork()
>> > * wrapper that code uses.
>> > */
>> > #if defined(_WIN32) \
>> > || defined(__vms) \
>> > || (defined(__FreeBSD__) /* && (__FreeBSD__ < 6)*/ )
>> > return 0=3B
>> > #else
>> > while (1)
>> > {
>> > int i =3D pthread_atfork(prepare=2C parent=2C child)=3B
>> > if (i !=3D EAGAIN)
>> > return i=3B
>> > sleep(0)=3B
>> > }
>> > #endif
>> > }
>>=20
> 		 	   		  =
>
>--_3dd397d4-ac1d-4148-a9ff-059d27dd794a_
>Content-Type: text/html; charset="iso-8859-1"
>Content-Transfer-Encoding: quoted-printable
>
><html>
><head>
><style><!--
>.hmmessage P
>{
>margin:0px=3B
>padding:0px
>}
>body.hmmessage
>{
>font-size: 10pt=3B
>font-family:Tahoma
>}
>--></style>
></head>
><body class=3D'hmmessage'>
>&gt=3B The following code from RTProcessC.c ensures that it is neeeded on e=
>very Unix except<BR>&gt=3B &gt=3B /* NOTE: Even userthreads now depends<BR>=
>&gt=3B &gt=3B * on availability of pthreads.<BR>&gt=3B &gt=3B * This can be=
> fixed if need be.<BR>&gt=3B &gt=3B */<BR><BR>
>&nbsp=3B<BR>
>Ok=2C "we" should probably go ahead and fix that.<BR>
>I'll try to=2C but no&nbsp=3Bpromises=2C sorry.<BR>
>&nbsp=3B<BR>
>&nbsp=3B- Jay<BR>&nbsp=3B<BR>
>&gt=3B From: hosking at cs.purdue.edu<BR>&gt=3B Date: Mon=2C 18 Apr 2011 18:11=
>:26 -0400<BR>&gt=3B To: mika at async.caltech.edu<BR>&gt=3B CC: m3devel at elegos=
>oft.com<BR>&gt=3B Subject: Re: [M3devel] 5.8.6 LINUXLIBC6 breakage=2C kerne=
>l 2.6.23=2C glibc-2.6-4<BR>&gt=3B <BR>&gt=3B Probably unnecessary=2C given =
>that I think there is another entry point to forking a process (I forget wh=
>ere) in the thread-specific portion of m3core. In which case the necessary =
>work might be done there?<BR>&gt=3B <BR>&gt=3B On Apr 18=2C 2011=2C at 2:45=
> PM=2C Mika Nystrom wrote:<BR>&gt=3B <BR>&gt=3B &gt=3B Tony Hosking writes:=
><BR>&gt=3B &gt=3B ...<BR>&gt=3B &gt=3B&gt=3B pthread_atfork should not be n=
>eeded under user threads.<BR>&gt=3B &gt=3B ...<BR>&gt=3B &gt=3B <BR>&gt=3B =
>&gt=3B The following code from RTProcessC.c ensures that it is neeeded on e=
>very Unix except<BR>&gt=3B &gt=3B FreeBSD before 6. The comment is from the=
> checked-in source file.<BR>&gt=3B &gt=3B <BR>&gt=3B &gt=3B /* NOTE: Even u=
>serthreads now depends<BR>&gt=3B &gt=3B * on availability of pthreads.<BR>&=
>gt=3B &gt=3B * This can be fixed if need be.<BR>&gt=3B &gt=3B */<BR>&gt=3B =
>&gt=3B <BR>&gt=3B &gt=3B INTEGER<BR>&gt=3B &gt=3B __cdecl<BR>&gt=3B &gt=3B =
>RTProcess__RegisterForkHandlers(<BR>&gt=3B &gt=3B ForkHandler prepare=2C<BR=
>>&gt=3B &gt=3B ForkHandler parent=2C<BR>&gt=3B &gt=3B ForkHandler child)<BR=
>>&gt=3B &gt=3B {<BR>&gt=3B &gt=3B /* FreeBSD &lt=3B 6 lacks pthread_atfork.=
> Would be good to use autoconf.<BR>&gt=3B &gt=3B * VMS lacks pthread_atfork=
>? Would be good to use autoconf.<BR>&gt=3B &gt=3B * Win32 lacks pthread_atf=
>ork and fork. OK.<BR>&gt=3B &gt=3B *<BR>&gt=3B &gt=3B * As well=2C for all =
>Posix systems=2C we could implement<BR>&gt=3B &gt=3B * atfork ourselves=2C =
>as long as we provide a fork()<BR>&gt=3B &gt=3B * wrapper that code uses.<B=
>R>&gt=3B &gt=3B */<BR>&gt=3B &gt=3B #if defined(_WIN32) \<BR>&gt=3B &gt=3B =
>|| defined(__vms) \<BR>&gt=3B &gt=3B || (defined(__FreeBSD__) /* &amp=3B&am=
>p=3B (__FreeBSD__ &lt=3B 6)*/ )<BR>&gt=3B &gt=3B return 0=3B<BR>&gt=3B &gt=
>=3B #else<BR>&gt=3B &gt=3B while (1)<BR>&gt=3B &gt=3B {<BR>&gt=3B &gt=3B in=
>t i =3D pthread_atfork(prepare=2C parent=2C child)=3B<BR>&gt=3B &gt=3B if (=
>i !=3D EAGAIN)<BR>&gt=3B &gt=3B return i=3B<BR>&gt=3B &gt=3B sleep(0)=3B<BR=
>>&gt=3B &gt=3B }<BR>&gt=3B &gt=3B #endif<BR>&gt=3B &gt=3B }<BR>&gt=3B <BR> =
>		 	   		  </body>
></html>=
>
>--_3dd397d4-ac1d-4148-a9ff-059d27dd794a_--



More information about the M3devel mailing list