[Bug go/56172] net FAILs on Solaris

2013-02-07 Thread ian at gcc dot gnu.org


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



--- Comment #6 from ian at gcc dot gnu.org ian at gcc dot gnu.org 2013-02-07 
17:04:37 UTC ---

Author: ian

Date: Thu Feb  7 17:04:24 2013

New Revision: 195855



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195855

Log:

PR go/56172

net: Skip TestMulticastListener on Solaris



From Rainer Orth.



Modified:

trunk/libgo/go/net/multicast_posix_test.go


[Bug go/56172] net FAILs on Solaris

2013-02-06 Thread ian at gcc dot gnu.org


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



--- Comment #4 from ian at gcc dot gnu.org ian at gcc dot gnu.org 2013-02-06 
22:40:26 UTC ---

Author: ian

Date: Wed Feb  6 22:40:18 2013

New Revision: 195823



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195823

Log:

PR go/56172

net: Fixes for select based pollster.



Make Close work properly, mainly for testing.  Restart the

select if a descriptor is closed.



Modified:

trunk/libgo/go/net/fd_bsd.go

trunk/libgo/go/net/fd_linux.go

trunk/libgo/go/net/fd_select.go

trunk/libgo/go/net/fd_unix.go


[Bug go/56172] net FAILs on Solaris

2013-02-06 Thread ian at airs dot com


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



Ian Lance Taylor ian at airs dot com changed:



   What|Removed |Added



 Status|NEW |RESOLVED

 Resolution||FIXED



--- Comment #5 from Ian Lance Taylor ian at airs dot com 2013-02-06 22:41:54 
UTC ---

The patch to mheap.c should fix this segmentation violation.



As expected, there was another underlying problem, which should be fixed by the

patch to the net package.


[Bug go/56172] net FAILs on Solaris

2013-02-05 Thread ian at gcc dot gnu.org


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



--- Comment #3 from ian at gcc dot gnu.org ian at gcc dot gnu.org 2013-02-05 
23:59:28 UTC ---

Author: ian

Date: Tue Feb  5 23:59:24 2013

New Revision: 195774



URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=195774

Log:

PR go/56172

runtime: Fix argument passed to forcegchelper.



Modified:

trunk/libgo/runtime/mheap.c


[Bug go/56172] net FAILs on Solaris

2013-02-04 Thread ro at CeBiTec dot Uni-Bielefeld.DE


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



--- Comment #2 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2013-02-04 13:00:59 UTC ---

Thanks for the analysis.



 Since you can recreate the bug, I guess the next step is to check the

 mp-waitsema field in the runtime_semawakeup frame.  My prediction is that it

 is 0.  But I'm not sure where to go from there since I don't see how it could

 be 0.



In my case, mp-waitsema is 8.



In case you want to have a look yourself (which will be way faster), you

can find the build in

apoc:/var/gcc/regression/trunk/11-gcc-gas/build/sparc-sun-solaris2.11/libgo/net-check/test.



Rainer


[Bug go/56172] net FAILs on Solaris

2013-02-02 Thread ian at airs dot com


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



Ian Lance Taylor ian at airs dot com changed:



   What|Removed |Added



 Status|UNCONFIRMED |NEW

   Last reconfirmed||2013-02-02

 Ever Confirmed|0   |1



--- Comment #1 from Ian Lance Taylor ian at airs dot com 2013-02-02 16:08:32 
UTC ---

The error suggests that runtime_semawakeup was called with an m whose waitsema

field is NULL.  There should be no way that kickoff can call runtime_semawakeup

directly, but it could be happening via a tailcall at the end of the function

that some goroutine was started to run.  Possible tailcalls could come from

runtime_unlock or runtime_notewakeup.  The stack trace shows that the goroutine

was started at mheap.c:408, and indeed that line starts a goroutine that runs 

forcegchelper, and indeed forcegchelper ends with a tailcall to

runtime_notewakeup.  runtime_notewakeup will look at the note's waitm field. 

In this case the waitm field must be not NULL, and it must point to an m whose

waitsema field is NULL.



Unfortunately I don't see any way that could happen.  The only m that could be

in the note is the one running runtime_MHeap_Scavenger.  And that could only be

in the note if it calls runtime_notesleep before forcegchelper gets around to

calling runtime_notewakeup.  And runtime_notesleep initializes the waitsema

field before it puts the m in the note.



Since you can recreate the bug, I guess the next step is to check the

mp-waitsema field in the runtime_semawakeup frame.  My prediction is that it

is 0.  But I'm not sure where to go from there since I don't see how it could

be 0.



And by the way I bet this is hiding something else, since the scavenger should

only run if nothing much else is happening, so once we fix this problem I

expect that the test will time out for some reason.