http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48312

           Summary: [4.7 regression] http, rpc, websocket tests hang on
                    Solaris 2/x86
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
        AssignedTo: i...@airs.com
        ReportedBy: r...@gcc.gnu.org
              Host: i386-pc-solaris2.1[01]
            Target: i386-pc-solaris2.1[01]
             Build: i386-pc-solaris2.1[01]


Created attachment 23789
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=23789
Minimal patch to get fd_rtems.go to compile.

After the latest libgo import, the network-related libgo tests hang on Solaris
10
and 11/x86.  To even get libgo to compile, I needed the attached patch to
fd_rtems.go (which should better be called fd_select.go since this is what it
really is).

Even after that, the http, rpc, and websocket tests just hang in select, as can
be seen in the pstack output from the http test:

8131:    ./a.out
-----------------  lwp# 1 / thread# 1  --------------------
 fe35b3ab lwp_park (0, 0, 0)
 fe354e03 cond_wait_queue (de221678, de221660, 0, fe355329) + 63
 fe3553a1 __cond_wait (de221678, de221660, 8045158, fe3553e9) + 89
 fe3553f7 cond_wait (de221678, de221660, 80451a8, fe35542d) + 27
 fe355442 pthread_cond_wait (de221678, de221660, 80451c8, fe3f7500, 18,
8045100) + 24
 fe64467c __go_receive_acquire (de221660, 0, 8045218, fe641cb9, 80451f8,
80451f8) + 7c
 fe6447f1 __go_receive_small_closed (de221660, 0, 0, fe87d6c0, 16) + 41
 fe64489d __go_receive_small (de221660, de22c500, 0, 809eaea, 14, 1) + 2d
 fe7fd1cd libgo_testing.testing.RunTests (8088b38, de222240, 30, 30, fefa0810,
fee70018) + 21d
 fe7fd481 libgo_testing.testing.Main (8088b38, de222240, 30, 30, de20ebf0, 0) +
81
 08088cb4 main.main (4d9060de, 8045720, 80453f0, feffb93c, 8045400, de200000) +
48
 080958ef main     (1, 8045434, 804543c, 8045428, 80640c2, 80956f0) + 1df
 08064123 _start   (1, 8045788, 0, 8045790, 804579e, 80457aa) + 83
-----------------  lwp# 24 / thread# 24  --------------------
 fe35b3ab lwp_park (0, 0, 0)
 fe354e03 cond_wait_queue (de217f68, de217f50, 0, fe355329) + 63
 fe3553a1 __cond_wait (de217f68, de217f50, cdefea68, fe3553e9) + 89
 fe3553f7 cond_wait (de217f68, de217f50, de217f50, fe35542d) + 27
 fe355442 pthread_cond_wait (de217f68, de217f50, 5a5b497, 321, 8056414, 100) +
24
 fe64467c __go_receive_acquire (de217f50, 0, 0, 807e3b8, cdefeb00, fefc0744) +
7c
 fe643d4e __go_receive_big (de217f50, cdefeb50, de229300, fe6494b7, fedf3f40,
de234f20) + 3e
 080809b2 libgo_http.http.roundTrip.pN27_libgo_http.http.persistConn (cdefec08,
de23f840, de229300, 4, 809c52c, 4) + 112
 0807e6b9 libgo_http.http.RoundTrip.pN25_libgo_http.http.Transport (cdefeccc,
de20eb60, de229300, fe6494b7, de230005, 11) + 301
 0806b2c3 http.send (cdefedb8, de229300, 80a4268, de20eb60, 0, fe3f3000) + 249
 0806b5d6 libgo_http.http.Get.pN22_libgo_http.http.Client (cdefee38, de200568,
de234f60, 16, cdf00a3c, 0) + 1de
 0806b38d libgo_http.http.Get (cdefeee8, de230000, 16, fe350f13, 0, fe3f3000) +
4e
 08088f87 go.http_test.TestClient (de22c5d0, 0, fee60200, fe353c8c, fe87d6c0,
fe8cb584) + 89
 fe7fc595 testing.tRunner (de22c5d0, de222348, fe87d6c0, 80bc468, fe8cb584,
fe87d6c0) + 25
 fe7fc25a testing.$thunk0 (de22c5e0, fe3f3000, cdefefd8, fe35a535, fe3f9e00,
fee62000) + 1a
 fe641b41 start_go_thread (de21b380, fe3f3000, cdefefe8, fe35b079) + 81
 fe35b0cc _thrp_setup (cdf00a40) + 9d
 fe35b370 _lwp_start (cdf00a40, 0, 0, 0, 0, 0)
-----------------  lwp# 25 / thread# 25  --------------------
 fe35f4a7 pollsys  (ce00ed00, 1, 0, 0)
 fe30afeb pselect  (5, de22a000, 0, 0, 0, 0) + 193
 fe30b2f1 select   (5, de22a000, 0, 0, 0, fefc0744) + 79
 fe7fb3f1 libgo_syscalls.syscall.Select (ce00ee40, 5, de22a000, de22a080, 0, 0)
+ 41
 fe6b9301 libgo_net.net.WaitFD.pN22_libgo_net.net.pollster (ce00ef14, de2300a0,
de201570, 0, 0, fe3f3000) + 221
 fe6c1515 libgo_net.net.Run.pN24_libgo_net.net.pollServer (de201570, 0,
fe87d6c0, 80bc440, fe8cb584, fe87d6c0) + e5
 fe6b5843 net.$thunk0 (de232288, fe3f3000, ce00efd8, fe35a535, fe3f9e00,
fee62000) + 13
 fe641b41 start_go_thread (de23f140, fe3f3000, ce00efe8, fe35b079) + 81
 fe35b0cc _thrp_setup (cdf00240) + 9d
 fe35b370 _lwp_start (cdf00240, 0, 0, 0, 0, 0)
-----------------  lwp# 26 / thread# 26  --------------------
 fe35b3ab lwp_park (0, 0, 0)
 fe354e03 cond_wait_queue (de221b58, de221b40, 0, fe355329) + 63
 fe3553a1 __cond_wait (de221b58, de221b40, cddffc58, fe3553e9) + 89
 fe3553f7 cond_wait (de221b58, de221b40, cddffc98, fe35542d) + 27
 fe355442 pthread_cond_wait (de221b58, de221b40, 1, fe87d6c0, 72, fe87d6c0) +
24
 fe64467c __go_receive_acquire (de221b40, 0, fe50f9e3, fef70018, 3, 0) + 7c
 fe6447f1 __go_receive_small_closed (de221b40, 0, 0, fe87d6c0, de229280) + 41
 fe64489d __go_receive_small (de221b40, de229200, 72, de201570, fe87d6c0,
de229280) + 2d
 fe6ba741 libgo_net.net.WaitRead.pN24_libgo_net.net.pollServer (de201570,
de229280, de232540, 9db, fe436940, feff0100) + 41
 fe6ba81f libgo_net.net.accept.pN19_libgo_net.net.netFD (cddffde4, de229280,
fe6b8780, 316, 8056364, cddfff20) + cf
 fe6c1b2a libgo_net.net.AcceptTCP.pN25_libgo_net.net.TCPListener (cddffe24,
de2322e0, fefa0810, 7e8, fe7e3939, cddffe90) + 4a
 fe6c1bd8 libgo_net.net.Accept.pN25_libgo_net.net.TCPListener (cddffe90,
de2322e0, 0, 1, 100000, fe9e6560) + 28
 fe7e3939 libgo_http.httptest.Accept.pN35_libgo_http.httptest.historyListener
(cddfff20, de230020, de232538, fe35284f, fe3f9e0c, 0) + 39
 0807b92e libgo_http.http.Serve.pN22_libgo_http.http.Server (cddfff68,
de234fa0, fe92b23c, de230020, fe8cb584, 0) + 7b
 fe7e383e httptest.$thunk0 (de22c220, fe3f3000, cddfffd8, fe35a535, fe3f9e00,
fee62000) + 2e
 fe641b41 start_go_thread (de23f180, fe3f3000, cddfffe8, fe35b079) + 81
 fe35b0cc _thrp_setup (cdf01240) + 9d
 fe35b370 _lwp_start (cdf01240, 0, 0, 0, 0, 0)
-----------------  lwp# 27 / thread# 27  --------------------
 fe35b3ab lwp_park (0, 0, 0)
 fe354e03 cond_wait_queue (de23da38, de23da20, 0, fe355329) + 63
 fe3553a1 __cond_wait (de23da38, de23da20, cdd00c08, fe3553e9) + 89
 fe3553f7 cond_wait (de23da38, de23da20, cdd00c48, fe35542d) + 27
 fe355442 pthread_cond_wait (de23da38, de23da20, fe46451b, fe87d6c0, 72,
fe87d6c0) + 24
 fe64467c __go_receive_acquire (de23da20, 0, 10, de23e010, 6, 0) + 7c
 fe6447f1 __go_receive_small_closed (de23da20, 0, 0, fe87d6c0, de229380) + 41
 fe64489d __go_receive_small (de23da20, de229300, 72, fe87d6c0, fe87d6c0,
cdd00d28) + 2d
 fe6ba741 libgo_net.net.WaitRead.pN24_libgo_net.net.pollServer (de201570,
de229380, de22b000, 1000, 1000, fe3f3000) + 41
 fe6bb954 libgo_net.net.Read.pN19_libgo_net.net.netFD (cdd00d84, de229380,
de22b000, 1000, 1000, 3) + 1f4
 fe6c211e libgo_net.net.Read.pN21_libgo_net.net.TCPConn (cdd00e14, de232530,
de22b000, 1000, 1000, fee70018) + 7e
 fe65ecba libgo_bufio.bufio.fill.pN24_libgo_bufio.bufio.Reader (de201510, 0, 0,
0, 0, 80bc4b8) + 10a
 fe66094b libgo_bufio.bufio.Peek.pN24_libgo_bufio.bufio.Reader (cdd00f0c,
de201510, 1, fe352811, fe3f9e0c, 1000000) + fb
 080805a1 libgo_http.http.readLoop.pN27_libgo_http.http.persistConn (de23f840,
0, fe87d6c0, 80bc4b8, fe8cb584, fe87d6c0) + 35
 08084ced http.$thunk35 (de232668, fe3f3000, cdd00fd8, fe35a535, fe3f9e00,
fee62000) + 18
 fe641b41 start_go_thread (de23f880, fe3f3000, cdd00fe8, fe35b079) + 81
 fe35b0cc _thrp_setup (cdf01a40) + 9d
 fe35b370 _lwp_start (cdf01a40, 0, 0, 0, 0, 0)

Don't know yet what I'm overlooking here, I probably got the locking wrong.

Reply via email to