<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div><font class="Apple-style-span" color="#0000FF" face="'Gill Sans'"><span class="Apple-style-span" style="font-size: medium;">What does -C do?</span></font></div></span></span></span></span></span></span></span></span></div></span></span>
</div>
<br><div><div>On 29 Dec 2009, at 12:47, Olaf Wagner wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Any ideas? Interaction problem between threads and select?<br><br>Olaf<br><br>----- Forwarded message from <a href="mailto:bugs@elego.de">bugs@elego.de</a> -----<br>    Date: Tue, 29 Dec 2009 16:23:23 -0000<br>    From: CM3 <<a href="mailto:bugs@elego.de">bugs@elego.de</a>><br>Reply-To: CM3 <<a href="mailto:bugs@elego.de">bugs@elego.de</a>><br> Subject: [CM3] #1080: CVSUPD server hangs if used with -C option<br>      To: @MISSING_DOMAIN<br><br>#1080: CVSUPD server hangs if used with -C option<br>-----------------------------+----------------------------------------------<br>  Reporter:  rajeshvadivelu  |            Owner:  wagner<br>      Type:  sw-bug          |           Status:  new<br>  Priority:  high            |        Milestone:<br> Component:  sys             |          Version:  5.8-RC3<br>  Severity:  critical        |         Keywords:<br>   Relnote:                  |     Confidential:  no<br>       Org:  Collabnet       |   Estimatedhours:  0<br>     Hours:  0               |         Billable:  0<br>Totalhours:  0               |<br>-----------------------------+----------------------------------------------<br>Htr:<br>Install cvsup from cm3-bin-ws-cvsup-LINUXLIBC6-5.8.4-RC4.tgz package.<br><br>Start the cvsupd server with -C option<br><br>./cvsupd -b /data/cvsupd -C 2<br><br>Try cvsup client to connect to the sever<br><br>./cvsup -g -L 2 /tmp/cvsupd.cfg<br><br>The client connection will hang and after sometime we will get "Inactivity timeout"<br><br><br>Fix:<br><br><br><br>Env:<br><br><br>-----------------------------+----------------------------------------------<br> In a RHEL5 32bit box I was trying to run cvsupd server to mirror my cvs<br> repo. I did used cm3-bin-ws-cvsup-LINUXLIBC6-5.8.4-RC4.tgz to get the<br> cvsup installed.<br><br> The server starts find and there was no issues if I start the server<br> without -C option.<br><br> Starting cvsupd server without -C option<br><br> $ ./cvsupd -b /u2/site/data/cvsupd<br> 2009.12.29 21:31:05 IST [6225]: CVSup server started<br> 2009.12.29 21:31:05 IST [6225]: Software version: 2009-08-30 21:02:46<br> 2009.12.29 21:31:05 IST [6225]: Protocol version: 17.0<br> 2009.12.29 21:31:05 IST [6225]: Ready to service requests<br><br> Then I did a client request as below<br><br> $ ./cvsup -g -L 2 /tmp/cvsupd.cfg<br> Parsing supfile "/tmp/cvsupd.cfg"<br> Connecting to <a href="http://myserver.com">myserver.com</a><br> Connected to <a href="http://myserver.com">myserver.com</a><br> Rejected by server: Access denied<br> Will retry at 21:37:09<br><br> So the request was successful and I get a valid error message at the<br> client.<br><br> But when I start the server with -C option like the one as below, requests<br> from client are hanging and eventually getting "Inactivity timeout" after<br> sometime.<br><br> $ ./cvsupd -b /u2/site/data/cvsupd -C 2<br><br> When ever a new client connection was made, this daemon clones another<br> cvsupd process and it also hangs. So none of the client request were<br> processed.<br><br> Strace of the main cvsupd server process, when a new client request was<br> fired.<br><br> -----------------------------------<br> select(4, [3], [], [3], {0, 39000})     = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 1 (in [3], left {0, 553000})<br> accept(3, {sa_family=AF_INET, sin_port=htons(51221),<br> sin_addr=inet_addr("208.75.198.60")}, [16]) = 6<br> setsockopt(6, SOL_SOCKET, SO_LINGER, {onoff=1, linger=1}, 8) = 0<br> setsockopt(6, SOL_TCP, TCP_NODELAY, [1], 4) = 0<br> fcntl64(6, F_GETFL)                     = 0x2 (flags O_RDWR)<br> fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK)  = 0<br> gettimeofday({1262103026, 146476}, NULL) = 0<br> open("/u2/site/data/cvsupd/cvsupd.access", O_RDONLY|O_LARGEFILE) = 7<br> fstat64(7, {st_mode=S_IFREG|0755, st_size=215, ...}) = 0<br> _llseek(7, 0, [0], SEEK_CUR)            = 0<br> fstat64(7, {st_mode=S_IFREG|0755, st_size=215, ...}) = 0<br> close(7)                                = 0<br> gettimeofday({1262103026, 147481}, NULL) = 0<br> stat64("/u2/site/data/cvsupd/cvsupd.class", 0xbf809c04) = -1 ENOENT (No<br> such file or directory)<br> write(5, "\0", 1)                       = 1<br> futex(0x91580f0, FUTEX_WAKE, 1)         = 1<br> futex(0x9158098, FUTEX_WAKE, 1)         = 1<br> futex(0x91580b8, FUTEX_WAKE, 1)         = 1<br> futex(0x91580bc, FUTEX_WAIT, 5, NULL)   = -1 EAGAIN (Resource temporarily<br> unavailable)<br> futex(0x9158098, FUTEX_WAKE, 1)         = 0<br> clone(child_stack=0,<br> flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,<br> child_tidptr=0xb7f43708) = 6543<br> futex(0x915a484, 0x5 /* FUTEX_??? */, 1) = 1<br> futex(0x915a460, FUTEX_WAKE, 1)         = 1<br> futex(0x91580f0, FUTEX_WAKE, 1)         = 1<br> futex(0x9158098, FUTEX_WAKE, 1)         = 1<br> futex(0x91580b8, FUTEX_WAKE, 1)         = 1<br> futex(0x91580bc, FUTEX_WAIT, 7, NULL)   = -1 EAGAIN (Resource temporarily<br> unavailable)<br> futex(0x9158098, FUTEX_WAKE, 1)         = 0<br> close(6)                                = 0<br> accept(3, 0xbf809e44, [16])             = -1 EAGAIN (Resource temporarily<br> unavailable)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br> select(4, [3], [], [3], {1, 0})         = 0 (Timeout)<br><br> ------------------------------------<br><br> gdb backtrace of the main cvsupd server process<br><br> ------------------------------------<br><br> #0  0x00a2a402 in __kernel_vsyscall ()<br> #1  0x0026efb1 in ___newselect_nocancel () from /lib/libc.so.6<br> #2  0x00f8965b in Unix__select (nfds=4, readfds=0xb7f9df78,<br> writefds=0xb7f9df88, exceptfds=0xb7f9df98, timeout=0xbfed9410) at<br> ../src/unix/Common/UnixC.c:301<br> #3  0x00f85f4b in ThreadPThread__XIOWait__CallSelect.779 (M3_Cwb5VA_nfd=4,<br> M3_A4bqCj_timeout=0xbfed9410) at<br> ../src/thread/PTHREAD/ThreadPThread.m3:900<br> #4  0x00f85c7a in ThreadPThread__XIOWait (M3_BXP32l_self=0xb7f9400c,<br> M3_Cwb5VA_fd=3, M3_AicXUJ_read=1 '\001',<br> M3_CtKayy_interval=1.7976931348623157e+308, M3_AicXUJ_alertable=1 '\001')<br>     at ../src/thread/PTHREAD/ThreadPThread.m3:936<br> #5  0x00f8589d in SchedulerPosix__IOAlertWait (M3_Cwb5VA_fd=3,<br> M3_AicXUJ_read=1 '\001', M3_CtKayy_timeoutInterval=-1) at<br> ../src/thread/PTHREAD/ThreadPThread.m3:854<br> #6  0x00e4b499 in TCPMisc__AcceptFrom (M3_AahksS_c=0xb7f9ca48,<br> M3_DoBjMZ_peer=0xbfed9970) at ../src/POSIX/TCP.m3:458<br> #7  0x0807bcbf in FSServer__Run (M3_DS26rk_self=0xb7f9c9fc) at<br> ../src/FSServer.m3:153<br> #8  0x080934fd in Main_M3 (M3_AcxOUs_mode=1) at ../src/Main.m3:336<br> #9  0x00f717c8 in RTLinker__RunMainBody (M3_DjPxE3_m=0x80a11a0) at<br> ../src/runtime/common/RTLinker.m3:399<br> #10 0x00f70b82 in RTLinker__AddUnitI (M3_DjPxE3_m=0x80a11a0) at<br> ../src/runtime/common/RTLinker.m3:113<br> #11 0x00f70c10 in RTLinker__AddUnit (M3_DjPxE5_b=0x8090f4e) at<br> ../src/runtime/common/RTLinker.m3:122<br> #12 0x0804db1e in main (argc=5, argv=0xbfeda124, envp=0xbfeda13c) at<br> _m3main.mc:4<br> ------------------------------------------------<br><br><br> strace of the cloned cvsupd process<br><br> -----------------------------------<br><br> futex(0x91580bc, FUTEX_WAIT, 3, NULL<br><br> -----------------------------------<br><br> gdb backtrace of the cloned cvsupd process<br><br> -----------------------------------<br><br> #0  0x00a2a402 in __kernel_vsyscall ()<br> #1  0x00320146 in pthread_cond_wait@@GLIBC_2.3.2 () from<br> /lib/libpthread.so.0<br> #2  0x00f886e6 in ThreadPThread__pthread_cond_wait (cond=0x89c60b8,<br> mutex=0x89c6098) at ../src/thread/PTHREAD/ThreadPThreadC.c:326<br> #3  0x00f81d9d in ThreadPThread__XWait (M3_BXP32l_self=0xb7f9400c,<br> M3_AYIbX3_m=0xb7f9c8d8, M3_Bl0jv4_c=0xb7f9c8f4, M3_AicXUJ_alertable=0<br> '\0') at ../src/thread/PTHREAD/ThreadPThread.m3:238<br> #4  0x00f821ae in Thread__Wait (M3_AYIbX3_m=0xb7f9c8d8,<br> M3_Bl0jv4_c=0xb7f9c8f4) at ../src/thread/PTHREAD/ThreadPThread.m3:280<br> #5  0x00bd4e14 in SigHandler__ChangeState (M3_BnMAgS_d=0xb7f9c4bc,<br> M3_AkN0P6_state=2 '\002') at ../src/SigHandler.m3:105<br> #6  0x00bd5ba6 in SigHandler__ShutDown () at ../src/SigHandler.m3:243<br> #7  0x0807cbac in FSServer_M3_LINE_230.718 (L_2=0xbfed95d0) at<br> ../src/FSServer.m3:231<br> #8  0x0807c956 in FSServer__Run (M3_DS26rk_self=0xb7f9c9fc) at<br> ../src/FSServer.m3:227<br> #9  0x080934fd in Main_M3 (M3_AcxOUs_mode=1) at ../src/Main.m3:336<br> #10 0x00f717c8 in RTLinker__RunMainBody (M3_DjPxE3_m=0x80a11a0) at<br> ../src/runtime/common/RTLinker.m3:399<br> #11 0x00f70b82 in RTLinker__AddUnitI (M3_DjPxE3_m=0x80a11a0) at<br> ../src/runtime/common/RTLinker.m3:113<br> #12 0x00f70c10 in RTLinker__AddUnit (M3_DjPxE5_b=0x8090f4e) at<br> ../src/runtime/common/RTLinker.m3:122<br> #13 0x0804db1e in main (argc=5, argv=0xbfeda124, envp=0xbfeda13c) at<br> _m3main.mc:4<br><br> -------------------------------------------<br><br> So it looks like both the main and cloned cvsupd processes were waiting<br> for a response from the kernel call "__kernel_vsyscall ()". Under what<br> condition will this happen? Am I doing something wrong here?<br><br>-- <br>Ticket URL: <<a href="http://projects.elego.de/cm3/ticket/1080">http://projects.elego.de/cm3/ticket/1080</a>><br>CM3 <<a href="http://projects.elego.de/cm3">http://projects.elego.de/cm3</a>><br>Critical Mass Modula3 Compiler<br><br><br>----- End forwarded message -----<br><br><br>-- <br>Olaf Wagner -- elego Software Solutions GmbH<br>               Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin, Germany<br>phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23 45 86 95<br>   <a href="http://www.elegosoft.com">http://www.elegosoft.com</a> | Geschäftsführer: Olaf Wagner | Sitz: Berlin<br>Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194<br><br></div></blockquote></div><br></body></html>