Age | Commit message (Collapse) | Author | Files | Lines |
|
when garbage collector sees recovering goroutine
Fixes issue 711.
R=r
CC=golang-dev
http://codereview.appspot.com/869045
|
|
Could not take a signal on threads other than the main thread.
If you look at the spinning binary with dtrace, you can see a
fault happening over and over:
$ dtrace -n '
fbt::user_trap:entry /execname=="boot32" && self->count < 10/
{
self->count++;
printf("%s %x %x %x %x", probefunc, arg1, arg2, arg3, arg4);
stack();
tracemem(arg4, 256);
}'
dtrace: description 'fbt::user_trap:entry ' matched 1 probe
CPU ID FUNCTION:NAME
1 17015 user_trap:entry user_trap 0 10 79af0a0 79af0a0
mach_kernel`lo_alltraps+0x12a
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
0: 0e 00 00 00 37 00 00 00 00 00 00 00 1f 00 00 00 ....7...........
10: 1f 00 00 00 a8 33 00 00 00 00 00 01 00 00 00 00 .....3..........
20: 98 ba dc fe 07 09 00 00 00 00 00 00 98 ba dc fe ................
30: 06 00 00 00 0d 00 00 00 34 00 00 00 9e 1c 00 00 ........4.......
40: 17 00 00 00 00 02 00 00 ac 30 00 00 1f 00 00 00 .........0......
50: 00 00 00 00 00 00 00 00 0d 00 00 00 e0 e6 29 00 ..............).
60: 34 00 00 00 00 00 00 00 9e 1c 00 00 00 00 00 00 4...............
70: 17 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 ................
80: ac 30 00 00 00 00 00 00 1f 00 00 00 00 00 00 00 .0..............
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0: 48 00 00 00 10 00 00 00 85 00 00 00 a0 f2 29 00 H.............).
b0: 69 01 00 02 00 00 00 00 e6 93 04 82 ff 7f 00 00 i...............
c0: 2f 00 00 00 00 00 00 00 06 02 00 00 00 00 00 00 /...............
d0: 78 ee 42 01 01 00 00 00 1f 00 00 00 00 00 00 00 x.B.............
e0: 00 ed 9a 07 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
The memory dump shows a 32-bit exception frame:
x86_saved_state32
gs = 0x37
fs = 0
es = 0x1f
ds = 0x1f
edi = 0x33a8
esi = 0x01000000
ebp = 0
cr2 = 0xfedcba98
ebx = 0x0907
edx = 0
ecx = 0xfedcba98
eax = 0x06
trapno = 0x0d
err = 0x34
eip = 0x1c9e
cs = 0x17
efl = 0x0200
uesp = 0x30ac
ss = 0x1f
The cr2 of 0xfedcba98 is the address that the new thread read
to cause the fault, but note that the trap is now a GP fault with
error code 0x34, meaning it's moved past the cr2 problem and on
to an invaild segment selector. The 0x34 is suspiciously similar
to the 0x37 in gs, and sure enough, OS X forces gs to have
that value in the signal handler, and if your thread hasn't set
up that segment (known as USER_CTHREAD), you'll fault on the IRET
into the signal handler and never be able to handle a signal.
The kernel bug is that it forces segment 0x37 without making sure
it is a valid segment. Leopard also forced 0x37 but had the courtesy
to set it up first.
Since OS X requires us to set up that segment (using the
thread_fast_set_cthread_self system call), we might as well
use it instead of the more complicated i386_set_ldt call to
set up our per-OS thread storage.
Also add some more zeros to bsdthread_register for new arguments
in Snow Leopard (apparently unnecessary, but being careful).
Fixes issue 510.
R=r
CC=golang-dev
http://codereview.appspot.com/824046
|
|
Added Signbit(), revised Copysign()
R=rsc
CC=golang-dev
http://codereview.appspot.com/822045
Committer: Russ Cox <rsc@golang.org>
|
|
Avoids spurious wakeups during other sleeping by that goroutine.
Fixes issue 711.
R=r
CC=golang-dev
http://codereview.appspot.com/902041
|
|
Fixes issue 677.
R=rsc
CC=golang-dev
http://codereview.appspot.com/834046
|
|
channel recv data.
R=rsc
CC=golang-dev
http://codereview.appspot.com/896041
|
|
data just read from the channel.
this will make it easier to
recognize when to garbage
collect and finalize.
R=rsc
CC=golang-dev
http://codereview.appspot.com/882043
|
|
The cycle is *netFD -> cw chanl *netFD in struct ->
same *netFD in channel read buffer.
Because channels are finalized, the cycle makes them
uncollectable. A better fix is to make channels not
finalized anymore, and that will happen, but this is
an easy, reasonable workaround until then.
Another good fix would be to zero the channel receive
buffer entry after the receive. That too will happen.
R=r
CC=golang-dev
http://codereview.appspot.com/875043
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/864044
|
|
1. Fix bug in GOMAXPROCS when trying to cut number of procs
Race could happen on any system but was
manifesting only on Xen hosted Linux.
2. Fix recover on ARM, where FP != caller SP.
R=r
CC=golang-dev
http://codereview.appspot.com/880043
|
|
Instead of calling the package scope Lex function,
Parse now takes an argument which is used to
do the lexing.
I reverted to having the generated switch
code inside Parse rather than a separate function because
the function needs 7 arguments or a context structure,
which seems unnecessary.
I used yyrun(), not the original $A so that
it's possible to run the backquoted code through gofmt.
R=rsc, ken2, ken3
CC=golang-dev
http://codereview.appspot.com/879041
Committer: Ken Thompson <ken@golang.org>
|
|
to float instructions work correctly.
R=rsc
CC=golang-dev
http://codereview.appspot.com/870044
|
|
also: add /dev/null to the ls args to repair handling of empty dependency lists.
R=rsc
CC=golang-dev
http://codereview.appspot.com/883045
|
|
This is a documentation enhancement only, without any code
change.
The rationale for documenting this precisely is that Unix
programmers who "know" that errno's value is undefined after
a successful system call may be surprised otherwise and
search to be sure that a zero errno may be relied upon after
successful calls.
R=r, rsc1, rsc
CC=golang-dev
http://codereview.appspot.com/812044
Committer: Russ Cox <rsc@golang.org>
|
|
R=rsc, r
CC=golang-dev
http://codereview.appspot.com/810043
Committer: Russ Cox <rsc@golang.org>
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/812041
Committer: Russ Cox <rsc@golang.org>
|
|
R=gri
CC=golang-dev
http://codereview.appspot.com/867044
|
|
log: add test of Caller
New regexp in log test is picky and will require some
maintenance, but it catches off-by-one mistakes too.
Fixes issue 710.
R=gri
CC=esko.luontola, golang-dev
http://codereview.appspot.com/887043
|
|
R=adg
CC=golang-dev
http://codereview.appspot.com/813043
|
|
Complex math function package. Still needs more special case checking.
R=rsc
CC=golang-dev
http://codereview.appspot.com/874041
Committer: Russ Cox <rsc@golang.org>
|
|
R=iant
CC=golang-dev
http://codereview.appspot.com/862042
|
|
R=ken2
CC=golang-dev
http://codereview.appspot.com/821048
|
|
R=agl1
CC=golang-dev
http://codereview.appspot.com/851041
|
|
* correct symbol table size
* do not reorder functions in output
* traceback
* signal handling
* use same code for go + defer
* handle leaf functions in symbol table
R=kaib, dpx
CC=golang-dev
http://codereview.appspot.com/884041
|
|
R=ken2
CC=golang-dev
http://codereview.appspot.com/855044
|
|
R=rsc, rsc1
CC=golang-dev
http://codereview.appspot.com/808041
Committer: Russ Cox <rsc@golang.org>
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/881044
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/829044
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/770041
Committer: Russ Cox <rsc@golang.org>
|
|
R=ken2, r
CC=golang-dev
http://codereview.appspot.com/871042
Committer: Russ Cox <rsc@golang.org>
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/836046
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/838046
|
|
* adds pass 3 to dequeue from channels eagerly
various other cleanup/churn:
* use switch on cas->send in each pass to
factor out common code.
* longer goto labels, commented at target
* be more agressive about can't happen:
throw instead of print + cope.
* use "select" instead of "selectgo" in errors
* use printf for debug prints when possible
R=ken2, ken3
CC=golang-dev, r
http://codereview.appspot.com/875041
|
|
factor out environment variable checks.
infer $GOROOT etc during build if not set.
it's still necessary to set them for yourself
to use the standard Makefiles.
when running all.bash, don't recompile all the
go packages in run.bash, since make.bash already did.
R=r
CC=golang-dev
http://codereview.appspot.com/609042
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/816042
Committer: Rob Pike <r@golang.org>
|
|
R=r, gri
CC=golang-dev
http://codereview.appspot.com/872041
|
|
http://code.google.com/p/x-go-binding/
R=rsc
CC=golang-dev
http://codereview.appspot.com/846043
|
|
R=ken2
CC=golang-dev
http://codereview.appspot.com/870041
|
|
R=rsc, r
CC=golang-dev
http://codereview.appspot.com/864042
|
|
R=rsc, gri
CC=golang-dev
http://codereview.appspot.com/821046
|
|
R=r
CC=golang-dev
http://codereview.appspot.com/805043
|
|
R=ken2, r, ken3
CC=golang-dev
http://codereview.appspot.com/831042
|
|
R=rsc
CC=golang-dev
http://codereview.appspot.com/864041
|
|
in character and string case mapping routines.
Add a custom mapper for Turkish and Azeri.
A more general solution for deriving the case information from Unicode's
SpecialCasing.txt will require more work.
Fixes issue 703.
R=rsc, rsc1
CC=golang-dev, mdakin
http://codereview.appspot.com/824043
|
|
and use it to show version (date) of go spec
Fixes issue 68.
R=rsc
CC=golang-dev, r
http://codereview.appspot.com/848042
|
|
R=r
CC=golang-dev
http://codereview.appspot.com/842042
|
|
- more test cases
- comment fixes
- minor unrelated changes as part of investigation of issue 702
R=rsc
CC=golang-dev
http://codereview.appspot.com/860041
|
|
instead use pure substring matching to find template values.
this makes stdZulu unnecessary and allows formats
like "20060102 030405" (used in some internet protocols).
this makes Parse not handle years < 0000 or > 9999 anymore.
that seems like an okay price to pay, trading hypothetical
functionality for real functionality.
also changed the comments on the Time struct to use the
same reference date as the format and parse routines.
R=r
CC=golang-dev
http://codereview.appspot.com/833045
|
|
R=r
CC=golang-dev
http://codereview.appspot.com/848041
|
|
R=r
CC=golang-dev
http://codereview.appspot.com/800042
|