From: Bob Carragher (bobthedancer_at_yahoo.com)
Date: Sat Jan 05 2002 - 11:28:56 GMT
russ_at_amc.com (Russell Browne) writes: > I've been hacking in support for libthread_db over the last year, with a > result that works pretty well on solaris. I ran into the signal 32 > problem on Linux and went back to work on solaris. > > Bob's mail prompted me to look into this again. > > My Linux system has signal 32 as __SIGRTMIN, while the code in obj_signal.c > expects this macro to be _SIGRTMIN. Adding the following at about line > 133 of obj_signal.c, just before the use of _SIGRTMIN, should give > control over the handling of signal 32: > > #if defined(__SIGRTMIN) && !defined(_SIGRTMIN) > #define _SIGRTMIN __SIGRTMIN > #endif > #if defined(__SIGRTMAX) && !defined(_SIGRTMAX) > #define _SIGRTMAX __SIGRTMAX > #endif I added this in and rebuilt ups. As was probably expected, a bunch of new signals suddenly became "available" for control under the debugger. I modified the action for SIGRT0 (#32) so that ups would just ignore it. Although ups no longer halted on signal 32, it would not let me stop at a breakpoint in the thread's start function. Actually, it appeared that ups was just hanging. I also tried modifying the action so that ups would "accept and continue." Same result. Note that this was the behavior for a modified version of the code that I previously posted. I wanted to try to stop in the start function, called by the thread creation function. But the execution would terminate soon after thread creation, and presumably before ups would detect a stop at any breakpoint in the start function. So I "joined" the threads together using a call to pthread_join() immediately after the call to pthread_create(), forcing the creating thread to wait for the created thread to terminate. I still could not stop at any breakpoint in the start function. Curiously, if I disabled the breakpoint (or didn't define one), then ups would run the program to completion, producing the same visible behavior as if I had not run it under a debugger. Perhaps this is to be expected. Testing some other possibilities, I modified the code to recursively create and join threads (up to a limit of 10) inside the start function called by pthread_create(). I set up a global Boolean variable to toggle whether to do this recursion or not. I then placed a breakpoint within the code which is executed depending upon the Boolean variable's value. If the code is not executed, then ups will run properly to completion. If the code is executed, then ups will hang. You can "stop" execution by clicking on the Stop button a couple of times, and ups will indicate that it is stopped at the pthread_join() function in main(). I have again appended a uuencoded gzip-ed tar archive for people to inspect and test with. The two cases (single-thread-creation versus multiple-creation using recursive calls to pthread_create()) can be toggled between by changing the value of global Boolean variable, DoRecursiveThreadCreation, in a.cpp. (See the README file contained in the archive.) Bob ------------------------------Cut Here------------------------------ begin 600 tosend.tar.gz M'XL("/3B-CP"`W1O<V5N9"YT87(`[5KK4^,X$N<K^BNZLE-;82<)=IP'8]BK M`R8,J>.1"V%G[J:F4HHM$B^.Y;5L0FIK__=MR78>NPP.LP74W>KW@<A2J]7J MA]QM(5C@>M'NUG/",!I&VS#PUS#:K<;:;X8MH]TPF\V6:;6P;9H-J[$%S:T7 M0")B&@%LN31PV(B/OD;WR-#_,D1J?UISPO#9[&\:1NOK]J\W6JW<_D;3-)&^ M;N$P&-K^SX[OO,#Q$Y?!01A/(D;=VN0?9-GI<1%C[U3V$M14[#G@!3&X#,GA M1S#V\]X1YSZ\YWWF))'P[MA`<3O&/[''`R2]H;Y@^X3<<<^%'ZY0Z_%)$CCE M]#D\C,8[\"L!A,.3&`X.H'3*?)_#C$>^"S1?M"2'TB8VT'W]?34KDW\80\!F MZ>KI@)0W8G$2!4.'XZ9^A.I>J]VTC'?+<<$<'KB+<:O=;F6#-U#^ZJYR_at_7-" M)=7;MW``IK$Z)K$N02ZL(SFQ\O<+D2MKDQ[%Q?79V1/(OU^H_(EK[.ROT:^K M*M_(S]P+RLM=_&'>;V3Y=V'=$R_PQ(2YL!!LQ<C+)7-KK_648.8A6:I44+*L M3UE1]_K$2K:!AR:M;&VM?^ED*=MRMKW?")'.,Z6X=]F_at_T=BI@#/!`^4';-]] M_I)[P1.<\Z^ZQA/<XLDNL6+6/T?-XZZP;OL/G+NC.0,G2IB?1;BR:,H#TLU_ M_at_WV7IEJL!;5:;<WH,RJ>9/A5RQO*[/]W[_]S>LMN/)^]QOO?J!MM]?YOM*U& MO8VY@&F9AJG?_R^!SJ?.\?#B\+R#`<SN\347TY'/"(F9B.WM-^7%^`[93D*Q M1K,Z:F^K%))LC_']5^7PYI]0'<.;`ZCZV;E`B.,S&MAD.YI"]0;6>&]IO&K\ MHVFK,I%CSU$);EK_R?AOU.LR_JV6J>N_5['_,L!KJN/YSW^K82WK?W04I&\U M&_K\?YGZ#VLV"'@,S/5BS+X\`3(/@"K@(S[P.Q;-(B^.60`TB?E4%GO4]^<P MF_at_-Z38U\!QTY]4$/PJSJQAM7H(:CD0,\@C>GE^>=W>S9"T0L2TY"1OB&N`VY M3"I+BZ1T.#SIW95`O5C`M.#SV]87H$Z,==C:!)E_YV26)*M_0=8I(>;?VS)] M>ZPR-65*)[QQ0'VXZG[H7_at_P`'WC$0,0\!-ER(SI;(3F][J$@#I8EF%$&L1<D M["&R?U]W"UEUS\Z*2`;]PUX1S>%1OW"IDUYG$ZG_)47:@.[H^JIHQ:O.AY\* M:?Y3R*;71<F+%'#6/]]$ZD$'Z0IX75_US0UHZD4TQZ=G[S>1J?>QOPG9Q^[% M\>DFA-?]#QLM>[F9H:\&EX7^-[@:;!02QY<879N8:="]*%QS<'E=1//38%/' MZ/4O3XJX?3KN%:[XZ>3JOX7.<W%]U7E?1-4?&)L(WA^8Q9SJQ216,4FCF*19 M3-(J)FD7D^P5D[PK)C&-AVG^MOF_S`-./51&-'^I^K]A-?^0_V&CKO._E\!@ M'GK!^,P+&+'W[!$5F!JYD6T:MA,.D^"7A,?,;M_at_RQ;)-T^8A"X;"B1A3CS[% M-&TR'-.I))+9HVW6[8'C#SMWU#_!1)(<R42M)Q,U8C=MF8KMVU;#WB`G.\9D M,W`/H[$@=MVP[Z>A@%IMMT<C3]2K1HW>>5).X?IX.OX"U3O2N0\CF8P2NV7? M</[9^&);LB%%'4Q8=TK'[//L"^E%?!HJ>>H-\]T[I#;J6'C658?\;=BMO;TF M^?O$?[]S^/Z\\SKW?U:C92WBOVZVU?U?7<?_R\0_Q]QB&LJ2#X,-1A&>!EC+ M827(0'X#!,&3R&&0!"Z+9)%7_at_9]1922>ATQ67K>L)&]M)+F8,-^'4,46EG07 MEX..+>\)TJH2ZTB!H5V!.4]@BBQ_at_E'B^*UGF7_X9EI[W9,H">08P5U:8_42( M&@`&;R`Y.PR[J8`1\_D,URCC@*H(>2`6*P7L/H:01G0<T7`"4SI7!>X(DR?F M,"%H-*\09"(7E*NK]UY:]8H)3U"F"<7"46V)Q;%4B,`.M[9#R&7_at_I)-0:4Q@ MJP+L/I2:D^17*K$0\CI!'6,Q3Q5*4*%E.N7!&+?-D3(2.QDQ6'4HI[G>#FZT M&Z,R4(LCM39!!E_at_.8UY2760IZ2P>+%+"6_at_G@V/><6]DY0NY$BJ*F[1YG-"5E MW-*A2B9WNXI5"0T0QZ_at_XI5]/$+6P,Z'!.-T\MEQ?[EY*D4Y5;)8+$W+H"UX! M)U_^:%&5"\B4$F2C2J@^DXD%*\F-16D;XIG4TG)>M8J<F+3F\HYX)^=&E/;D MH+ITDRH[F@,+Z$A)*JE<3V1/<DF?QC&+*D1ZG4-1&)J(='OI9XK,3'%$'=D= M\60\D=\IT&/(>J?R3QY-<?FEN+B^\L%TF=QV)-M;+DSJ.Q>7'V$AAM))^JE# M&K![HX8F=#E%;7?E,\=BSY4T9I:>>I-?I,:<R&#V6:PB;1E6W,=XD2KA21PF ML9U>:<&#]^M&.O;8[:SQY]O7_$I]_7I57:2G_+[AQB^3Y,'[.X.0%9TI!TA5 M!@4J(TIEDR08I[ZC+*%4$Z1!4RDIMME1()CR%K)4H3IF<!\438U'AW.;:U/J M2)U$BRM$N3C\9:@/6[;57K!=O6C]-I;2/Z7G3>QZ:\%V.,P9SZ_at_7#]'7AQG= M,#MUBI#_"XECMS%[6OS#@#<6B<#$T7VJF.6``T8R'MS)="0/30PBS$=1_^B* MZ?=)>:<4I1W2Q-(94`1'.BYVX2"^JU;/$>')$WS%P'A>\]S*67A4'@\/?6FD MH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:&AH:'QJO@=H&Q_ %)@!0```` ` end
This archive was generated by hypermail 2.1.4 : Wed Feb 13 2002 - 21:51:34 GMT