From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 Message-ID: Date: Thu, 20 Jan 2011 09:03:58 +0100 From: Pierre.QUELIN@solystic.com Content-type: multipart/alternative; Boundary="0__=4EBBF28DDFBA41D08f9e8a93df938690918c4EBBF28DDFBA41D0" Content-Disposition: inline Subject: [Xenomai-help] debug posix skin - pthread_cond_wait return EPERM List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai@xenomai.org --0__=4EBBF28DDFBA41D08f9e8a93df938690918c4EBBF28DDFBA41D0 Content-Transfer-Encoding: quoted-printable Content-type: text/plain; charset=ISO-8859-1 Dear, I am trying to debug a posix application and I noticed what I think is a bug in the method pthread=5Fcond=5Fwait (). it returns EPERM when the application is started with gdb. Could you please help me to understand what is wrong or locate the bug? Best regards. Pierre Qu=E9lin ------------------------------------ Configuration ------------------------------------ Ubuntu 10.10 Linux xenomai 2.6.35.7-core2xeon-adeos-2.8-00 #1 SMP PREEMPT Mon Dec 6 13:37:41 CET 2010 i686 GNU/Linux Gnu C 4.4.4-14ubuntu5) GNU gdb (GDB) 7.2-ubuntu Gnu make 3.81 util-linux ng 2.17.2) mount ng 2.17.2 (with libblkid and selinux support) module-init-tools 3.12 e2fsprogs 1.41.12 Linux C Library 2.12.1 Dynamic linker (ldd) 2.12.1 Procps 3.2.8 Net-tools 1.60 Kbd 1.15 Sh-utils 8.5 Modules Loaded ip6table=5Ffilter ip6=5Ftables binfmt=5Fmisc ipt=5FMASQUERADE iptable=5Fnat nf=5Fnat nf=5Fconntrack=5Fipv4 nf=5Fdefrag=5Fipv4 xt=5Fstate = nf=5Fconntrack ipt=5FREJECT xt=5Ftcpudp iptable=5Ffilter ip=5Ftables x=5Ftables bridge stp= kvm=5Fintel kvm parport=5Fpc ppdev arc4 rt73usb crc=5Fitu=5Ft rt2x00usb rt2x00lib led= =5Fclass i3200=5Fedac edac=5Fcore mac80211 lp psmouse serio=5Fraw cfg80211 parport h= ed floppy e1000 e1000e ------------------------------------ Code ------------------------------------ #include /* line 0 */ #include void* bodyA(void*) { pthread=5Fcond=5Ft cond; pthread=5Fmutex=5Ft mutex; pthread=5Fmutexattr=5Ft attr; int res; res =3D pthread=5Fmutexattr=5Finit( &attr ); res =3D pthread=5Fmutexattr=5Fsetprotocol( &attr, PTHREAD=5FPRIO=5FINHER= IT ); res =3D pthread=5Fmutex=5Finit( &mutex, &attr ); res =3D pthread=5Fmutexattr=5Fdestroy( &attr ); res =3D pthread=5Fcond=5Finit( &cond, NULL ); bool state =3D false; res =3D pthread=5Fmutex=5Flock( &mutex ); while ( !state ) { res =3D pthread=5Fcond=5Fwait( &cond, &mutex ); if ( 0 !=3D res ) { res =3D pthread=5Fmutex=5Funlock( &mutex ); return (void*)-1; } else { (void)res; } } state =3D true; res =3D pthread=5Fmutex=5Funlock( &mutex ); return 0; }; void* bodyB(void*) { pthread=5Fcond=5Ft cond; pthread=5Fmutex=5Ft mutex; pthread=5Fmutexattr=5Ft attr; int res; res =3D pthread=5Fmutexattr=5Finit( &attr ); res =3D pthread=5Fmutexattr=5Fsetprotocol( &attr, PTHREAD=5FPRIO=5FINHER= IT ); res =3D pthread=5Fmutex=5Finit( &mutex, &attr ); res =3D pthread=5Fmutexattr=5Fdestroy( &attr ); res =3D pthread=5Fcond=5Finit( &cond, NULL ); bool state =3D false; res =3D pthread=5Fmutex=5Flock( &mutex ); while ( !state ) { res =3D pthread=5Fcond=5Fwait( &cond, &mutex ); if ( 0 !=3D res ) { res =3D pthread=5Fmutex=5Funlock( &mutex ); return (void*)-1; } else { (void)res; } } state =3D true; res =3D pthread=5Fmutex=5Funlock( &mutex ); return 0; }; #define DEFAULT=5FPRIORITY 100 #define HIGHEST=5FPRIORITY 2 #define LOWEST=5FPRIORITY 255 #define wind=5Fnormalized=5Fprio(prio, sched=5Ftype) \ ({ int =5F=5Fp =3D sched=5Fget=5Fpriority=5Fmin(sched=5Ftype) + ( ( ( LOW= EST=5FPRIORITY - (prio) ) * ( sched=5Fget=5Fpriority=5Fmax(sched=5Ftype) - sched=5Fget=5Fpri= ority=5Fmin (sched=5Ftype) ) ) / LOWEST=5FPRIORITY ); =5F=5Fp; }) int main() { mlockall(MCL=5FCURRENT | MCL=5FFUTURE); struct sched=5Fparam parA; parA.sched=5Fpriority =3D wind=5Fnormalized=5Fprio(DEFAULT=5FPRIORITY, SCHED=5FFIFO); pthread=5Ft threadA; pthread=5Fattr=5Ft pthread=5FattrA; int res; res =3D pthread=5Fattr=5Finit(&pthread=5FattrA); res =3D pthread=5Fattr=5Fsetinheritsched (&pthread=5FattrA, PTHREAD=5FEXPLICIT=5FSCHED); res =3D pthread=5Fattr=5Fsetschedpolicy (&pthread=5FattrA, SCHED=5FFIFO); res =3D pthread=5Fattr=5Fsetschedparam( &pthread=5FattrA, &parA ); res =3D pthread=5Fcreate( &threadA, &pthread=5FattrA, bodyA, NULL ); #ifdef =5F=5FXENO=5F=5F pthread=5Fset=5Fname=5Fnp( threadA, "threadA" ); #endif res =3D pthread=5Fattr=5Fdestroy( &pthread=5FattrA ); struct sched=5Fparam parB; parB.sched=5Fpriority =3D wind=5Fnormalized=5Fprio(DEFAULT=5FPRIORITY, SCHED=5FFIFO); pthread=5Ft threadB; pthread=5Fattr=5Ft pthread=5FattrB; res =3D pthread=5Fattr=5Finit(&pthread=5FattrB); res =3D pthread=5Fattr=5Fsetinheritsched (&pthread=5FattrB, PTHREAD=5FEXPLICIT=5FSCHED); res =3D pthread=5Fattr=5Fsetschedpolicy (&pthread=5FattrB, SCHED=5FFIFO); pthread=5Fattr=5Fsetschedparam( &pthread=5FattrB, &parB ); res =3D pthread=5Fcreate( &threadB, &pthread=5FattrB, bodyB, NULL ); #ifdef =5F=5FXENO=5F=5F pthread=5Fset=5Fname=5Fnp( threadB, "threadB" ); #endif res =3D pthread=5Fattr=5Fdestroy( &pthread=5FattrB ); pthread=5Fcond=5Ft cond; pthread=5Fmutex=5Ft mutex; pthread=5Fmutexattr=5Ft attr; res =3D pthread=5Fmutexattr=5Finit( &attr ); res =3D pthread=5Fmutexattr=5Fsetprotocol( &attr, PTHREAD=5FPRIO=5FINHER= IT ); res =3D pthread=5Fmutex=5Finit( &mutex, &attr ); res =3D pthread=5Fmutexattr=5Fdestroy( &attr ); res =3D pthread=5Fcond=5Finit( &cond, NULL ); bool state =3D false; res =3D pthread=5Fmutex=5Flock( &mutex ); while ( !state ) { res =3D pthread=5Fcond=5Fwait( &cond, &mutex ); if ( 0 !=3D res ) { res =3D pthread=5Fmutex=5Funlock( &mutex ); return -1; } else { (void)res; } } state =3D true; res =3D pthread=5Fmutex=5Funlock( &mutex ); return 0; } ------------------------------------ Linux without gdb : Ok ------------------------------------ ------------------------------------ Linux with gdb : Ok ------------------------------------ Thread [3] 5111 (Suspended : Container) =5F=5Fkernel=5Fvsyscall() at 0xb7fe1424 pthread=5Fcond=5Fwait@domain.hid() at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread=5Fcond=5Fwait.= S:142 0xb7fbd4ad bodyB() at /home/generation/Projets/PosixTest/src/Main.cpp:55 0x8048af1 start=5Fthread() at pthread=5Fcreate.c:304 0xb7fb8cc9 clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7e1469e Thread [2] 5110 (Suspended : Container) =5F=5Fkernel=5Fvsyscall() at 0xb7fe1424 pthread=5Fcond=5Fwait@domain.hid() at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread=5Fcond=5Fwait.= S:142 0xb7fbd4ad bodyA() at /home/generation/Projets/PosixTest/src/Main.cpp:21 0x8048a01 start=5Fthread() at pthread=5Fcreate.c:304 0xb7fb8cc9 clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7e1469e Thread [1] 5106 (Suspended : Signal : SIGINT:Interrupt) =5F=5Fkernel=5Fvsyscall() at 0xb7fe1424 pthread=5Fcond=5Fwait@domain.hid() at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread=5Fcond=5Fwait.= S:142 0xb7fbd4ad main() at /home/generation/Projets/PosixTest/src/Main.cpp:131 0x8048dfa ------------------------------------ Xenomai without gdb : Ok ------------------------------------ generation@domain.hid$ cat /proc/xenomai/sched CPU PID CLASS PRI TIMEOUT TIMEBASE STAT NAME 0 0 idle -1 - master R ROOT/0 1 0 idle -1 - master R ROOT/1 0 5025 rt 0 - master W PosixTest 0 5026 rt 60 - master W threadA 0 5027 rt 60 - master W threadB ------------------------------------ Xenomai with gdb : Nok ------------------------------------ ->Step 1 : (break point on pthread=5Fcond=5Fwait) Thread [2] 5193 (Suspended : Breakpoint) bodyA() at /home/generation/Projets/PosixTest/src/Main.cpp:21 0x8048b0f 0xb7fc30b2 start=5Fthread() at pthread=5Fcreate.c:304 0xb7fa4cc9 clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7df869e Thread [1] 5188 (Suspended : Container) =5F=5Fkernel=5Fvsyscall() at 0xb7fe1424 mmap() at ../sysdeps/unix/sysv/linux/i386/mmap.S:62 0xb7df4a88 allocate=5Fstack() at allocatestack.c:489 0xb7fa563b =5F=5Fpthread=5Fcreate=5F2=5F1() at pthread=5Fcreate.c:458 0xb7fa563b =5F=5Freal=5Fpthread=5Fcreate() at 0xb7fca382 =5F=5Fwrap=5Fpthread=5Fcreate() at 0xb7fc2e2f main() at /home/generation/Projets/PosixTest/src/Main.cpp:110 0x8048e7e ->Step 2 : break point after pthread=5Fcond=5Fwait. pthread=5Fcond=5Fwait r= etrun 1 (EPERM) Thread [3] 5204 (Suspended : Container) =5F=5Fkernel=5Fvsyscall() at 0xb7fe1424 =5F=5Flll=5Flock=5Fwait=5Fprivate() at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/lowlevellock.S:95 0xb7fac133 =5FL=5Flock=5F2466() at 0xb7fa5d2a start=5Fthread() at pthread=5Fcreate.c:295 0xb7fa4ec1 clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7df869e Thread [2] 5193 (Suspended : Step) bodyA() at /home/generation/Projets/PosixTest/src/Main.cpp:22 0x8048b24 0xb7fc30b2 start=5Fthread() at pthread=5Fcreate.c:304 0xb7fa4cc9 clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7df869e Thread [1] 5188 (Suspended : Container) --0__=4EBBF28DDFBA41D08f9e8a93df938690918c4EBBF28DDFBA41D0 Content-Transfer-Encoding: quoted-printable Content-type: text/html; charset=ISO-8859-1 Content-Disposition: inline

Dear,

I am trying to debug a posix a= pplication and I noticed what I think is a bug in the method pthread=5Fcond= =5Fwait (). it returns EPERM when the application is started with gdb.
Could you please help me to understand what is wrong= or locate the bug?

Best regards.

Pierre Qu=E9lin
<= br>------------------------------------
Configuration
---------------= ---------------------
Ubuntu 10.10
Linux xenomai 2.6.35.7-core2xeon-a= deos-2.8-00 #1 SMP PREEMPT Mon Dec 6 13:37:41 CET 2010 i686 GNU/Linux
Gnu C 4.4.4-14ubuntu5)
GNU gdb (GDB) 7.2-ubuntu
Gnu make 3.81
ut= il-linux ng 2.17.2)
mount ng 2.17.2 (with libblkid and selinux support)<= br>module-init-tools 3.12
e2fsprogs 1.41.12
Linux C Library 2.12.1Dynamic linker (ldd) 2.12.1
Procps 3.2.8
Net-tools 1.60
Kbd 1.15<= br>Sh-utils 8.5
Modules Loaded ip6table=5Ffilter ip6=5Ftables binfmt=5Fm= isc ipt=5FMASQUERADE iptable=5Fnat nf=5Fnat nf=5Fconntrack=5Fipv4 nf=5Fdefr= ag=5Fipv4 xt=5Fstate nf=5Fconntrack ipt=5FREJECT xt=5Ftcpudp iptable=5Ffilt= er ip=5Ftables x=5Ftables bridge stp kvm=5Fintel kvm parport=5Fpc ppdev arc= 4 rt73usb crc=5Fitu=5Ft rt2x00usb rt2x00lib led=5Fclass i3200=5Fedac edac= =5Fcore mac80211 lp psmouse serio=5Fraw cfg80211 parport hed floppy e1000 e= 1000e

------------------------------------
Code
--------------= ----------------------
#include <sys/mman.h> /* line 0 */
#incl= ude <pthread.h>

void* bodyA(void*)
{
pthread=5Fcond= =5Ft cond;
pthread=5Fmutex=5Ft mutex;
pthread=5Fmutexattr=5Ft a= ttr;
int res;

res =3D pthread=5Fmutexattr=5Finit( &attr= );
res =3D pthread=5Fmutexattr=5Fsetprotocol( &attr, PTHREAD=5FP= RIO=5FINHERIT );
res =3D pthread=5Fmutex=5Finit( &mutex, &att= r );
res =3D pthread=5Fmutexattr=5Fdestroy( &attr );
res = =3D pthread=5Fcond=5Finit( &cond, NULL );

bool state =3D fals= e;
res =3D pthread=5Fmutex=5Flock( &mutex );
while ( !state= )
{
res =3D pthread=5Fcond=5Fwait( &cond, &mutex );=
if ( 0 !=3D res )
{
res =3D pthread=5Fmutex= =5Funlock( &mutex );
return (void*)-1;
}
= else
{
(void)res;
}
}
state =3D t= rue;
res =3D pthread=5Fmutex=5Funlock( &mutex );

return= 0;
};

void* bodyB(void*)
{
pthread=5Fcond=5Ft cond;
= pthread=5Fmutex=5Ft mutex;
pthread=5Fmutexattr=5Ft attr;
int= res;

res =3D pthread=5Fmutexattr=5Finit( &attr );
res = =3D pthread=5Fmutexattr=5Fsetprotocol( &attr, PTHREAD=5FPRIO=5FINHERIT = );
res =3D pthread=5Fmutex=5Finit( &mutex, &attr );
res= =3D pthread=5Fmutexattr=5Fdestroy( &attr );
res =3D pthread=5Fco= nd=5Finit( &cond, NULL );

bool state =3D false;
res =3D= pthread=5Fmutex=5Flock( &mutex );
while ( !state )
{
= res =3D pthread=5Fcond=5Fwait( &cond, &mutex );
if ( 0= !=3D res )
{
res =3D pthread=5Fmutex=5Funlock( &m= utex );
return (void*)-1;
}
else
{ (void)res;
}
}
state =3D true;
res = =3D pthread=5Fmutex=5Funlock( &mutex );

return 0;
};
#define DEFAULT=5FPRIORITY 100
#define HIGHEST=5FPRIORITY 2
#define= LOWEST=5FPRIORITY 255

#define wind=5Fnormalized=5Fprio(prio, sched= =5Ftype) \
({ int =5F=5Fp =3D sched=5Fget=5Fpriority=5Fmin(sched=5Fty= pe) + ( ( ( LOWEST=5FPRIORITY - (prio) ) * ( sched=5Fget=5Fpriority=5Fmax(s= ched=5Ftype) - sched=5Fget=5Fpriority=5Fmin(sched=5Ftype) ) ) / LOWEST=5FPR= IORITY ); =5F=5Fp; })

int main()
{
mlockall(MCL=5FCURRENT |= MCL=5FFUTURE);

struct sched=5Fparam parA;
parA.sched=5Fpri= ority =3D wind=5Fnormalized=5Fprio(DEFAULT=5FPRIORITY, SCHED=5FFIFO);
= pthread=5Ft threadA;
pthread=5Fattr=5Ft pthread=5FattrA;
int r= es;

res =3D pthread=5Fattr=5Finit(&pthread=5FattrA);
re= s =3D pthread=5Fattr=5Fsetinheritsched (&pthread=5FattrA, PTHREAD=5FEXP= LICIT=5FSCHED);
res =3D pthread=5Fattr=5Fsetschedpolicy (&pthread= =5FattrA, SCHED=5FFIFO);
res =3D pthread=5Fattr=5Fsetschedparam( &= ;pthread=5FattrA, &parA );
res =3D pthread=5Fcreate( &threadA= , &pthread=5FattrA, bodyA, NULL );
#ifdef =5F=5FXENO=5F=5F
pth= read=5Fset=5Fname=5Fnp( threadA, "threadA" );
#endif
res= =3D pthread=5Fattr=5Fdestroy( &pthread=5FattrA );



st= ruct sched=5Fparam parB;
parB.sched=5Fpriority =3D wind=5Fnormalized= =5Fprio(DEFAULT=5FPRIORITY, SCHED=5FFIFO);
pthread=5Ft threadB;
= pthread=5Fattr=5Ft pthread=5FattrB;

res =3D pthread=5Fattr=5Fini= t(&pthread=5FattrB);
res =3D pthread=5Fattr=5Fsetinheritsched (&a= mp;pthread=5FattrB, PTHREAD=5FEXPLICIT=5FSCHED);
res =3D pthread=5Fat= tr=5Fsetschedpolicy (&pthread=5FattrB, SCHED=5FFIFO);
pthread=5Fa= ttr=5Fsetschedparam( &pthread=5FattrB, &parB );
res =3D pthre= ad=5Fcreate( &threadB, &pthread=5FattrB, bodyB, NULL );
#ifdef = =5F=5FXENO=5F=5F
pthread=5Fset=5Fname=5Fnp( threadB, "threadB&qu= ot; );
#endif
res =3D pthread=5Fattr=5Fdestroy( &pthread=5Fatt= rB );


pthread=5Fcond=5Ft cond;
pthread=5Fmutex=5Ft mute= x;
pthread=5Fmutexattr=5Ft attr;

res =3D pthread=5Fmutexatt= r=5Finit( &attr );
res =3D pthread=5Fmutexattr=5Fsetprotocol( &am= p;attr, PTHREAD=5FPRIO=5FINHERIT );
res =3D pthread=5Fmutex=5Finit( &= amp;mutex, &attr );
res =3D pthread=5Fmutexattr=5Fdestroy( &a= ttr );
res =3D pthread=5Fcond=5Finit( &cond, NULL );

bo= ol state =3D false;
res =3D pthread=5Fmutex=5Flock( &mutex );
= while ( !state )
{
res =3D pthread=5Fcond=5Fwait( &co= nd, &mutex );
if ( 0 !=3D res )
{
res =3D= pthread=5Fmutex=5Funlock( &mutex );
return -1;
}<= br> else
{
(void)res;
}
}
st= ate =3D true;
res =3D pthread=5Fmutex=5Funlock( &mutex );

= return 0;
}

------------------------------------
Linux with= out gdb : Ok
------------------------------------

---------------= ---------------------
Linux with gdb : Ok
---------------------------= ---------
Thread [3] 5111 (Suspended : Container)
=5F=5Fkernel=5Fvsy= scall() at 0xb7fe1424
pthread=5Fcond=5Fwait@domain.hid() at ../nptl= /sysdeps/unix/sysv/linux/i386/i686/../i486/pthread=5Fcond=5Fwait.S:142 0xb7= fbd4ad
bodyB() at /home/generation/Projets/PosixTest/src/Main.cpp:55 0x= 8048af1
start=5Fthread() at pthread=5Fcreate.c:304 0xb7fb8cc9
clone= () at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7e1469e

Thread= [2] 5110 (Suspended : Container)
=5F=5Fkernel=5Fvsyscall() at 0xb7fe14= 24
pthread=5Fcond=5Fwait@domain.hid() at ../nptl/sysdeps/unix/sysv/= linux/i386/i686/../i486/pthread=5Fcond=5Fwait.S:142 0xb7fbd4ad
bodyA() = at /home/generation/Projets/PosixTest/src/Main.cpp:21 0x8048a01
start= =5Fthread() at pthread=5Fcreate.c:304 0xb7fb8cc9
clone() at ../sysdeps/= unix/sysv/linux/i386/clone.S:130 0xb7e1469e

Thread [1] 5106 (Suspen= ded : Signal : SIGINT:Interrupt)
=5F=5Fkernel=5Fvsyscall() at 0xb7fe142= 4
pthread=5Fcond=5Fwait@domain.hid() at ../nptl/sysdeps/unix/sysv/l= inux/i386/i686/../i486/pthread=5Fcond=5Fwait.S:142 0xb7fbd4ad
main() at= /home/generation/Projets/PosixTest/src/Main.cpp:131 0x8048dfa

----= --------------------------------
Xenomai without gdb : Ok
-----------= -------------------------
generation@domain.hid= $ cat /proc/xenomai/sched
CPU PID CLASS PRI TIMEOUT TIMEBASE STAT NAME0 0 idle -1 - master R ROOT/0
1 0 idle -1 - master R ROOT/1
0 5025 = rt 0 - master W PosixTest
0 5026 rt 60 - master W threadA
0 5027 rt 6= 0 - master W threadB

------------------------------------
Xenomai= with gdb : Nok
------------------------------------

->Step 1 = : (break point on pthread=5Fcond=5Fwait)

Thread [2] 5193 (Suspended = : Breakpoint)
bodyA() at /home/generation/Projets/PosixTest/src/Main.cp= p:21 0x8048b0f
0xb7fc30b2
start=5Fthread() at pthread=5Fcreate.c:30= 4 0xb7fa4cc9
clone() at ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb= 7df869e

Thread [1] 5188 (Suspended : Container)
=5F=5Fkernel=5F= vsyscall() at 0xb7fe1424
mmap() at ../sysdeps/unix/sysv/linux/i386/mmap= .S:62 0xb7df4a88
allocate=5Fstack() at allocatestack.c:489 0xb7fa563b <= br>=5F=5Fpthread=5Fcreate=5F2=5F1() at pthread=5Fcreate.c:458 0xb7fa563b =5F=5Freal=5Fpthread=5Fcreate() at 0xb7fca382
=5F=5Fwrap=5Fpthread=5F= create() at 0xb7fc2e2f
main() at /home/generation/Projets/PosixTest/src= /Main.cpp:110 0x8048e7e

->Step 2 : break point after pthread=5Fc= ond=5Fwait. pthread=5Fcond=5Fwait retrun 1 (EPERM)

Thread [3] 5204 (= Suspended : Container)
=5F=5Fkernel=5Fvsyscall() at 0xb7fe1424
=5F= =5Flll=5Flock=5Fwait=5Fprivate() at ../nptl/sysdeps/unix/sysv/linux/i386/i6= 86/../i486/lowlevellock.S:95 0xb7fac133
=5FL=5Flock=5F2466() at 0xb7fa5= d2a
start=5Fthread() at pthread=5Fcreate.c:295 0xb7fa4ec1
clone() a= t ../sysdeps/unix/sysv/linux/i386/clone.S:130 0xb7df869e

Thread [2]= 5193 (Suspended : Step)
bodyA() at /home/generation/Projets/PosixTest/= src/Main.cpp:22 0x8048b24
0xb7fc30b2
start=5Fthread() at pthread=5F= create.c:304 0xb7fa4cc9
clone() at ../sysdeps/unix/sysv/linux/i386/clon= e.S:130 0xb7df869e

Thread [1] 5188 (Suspended : Container)
--0__=4EBBF28DDFBA41D08f9e8a93df938690918c4EBBF28DDFBA41D0--