- 13 Mar, 2014 6 commits
-
-
Michael Hudson-Doyle authored
Under some circumstances, gccgoToolchain's ld can pass the path of build outputs that have been deleted to the link command. Fixes #7303. LGTM=rsc R=golang-codereviews, dave, michael.hudson, rsc CC=golang-codereviews https://golang.org/cl/61970044
-
Anthony Martin authored
Otherwise, we won't get a stack trace in some of the early init. Here's one example: http://build.golang.org/log/a96d10f6aee1fa3e3ae51f41da46d414a7ab02de After walking the stack by hand in acid, I was able to determine that the stackalloc inside mpreinit was causing the throw. LGTM=rsc R=rsc, dvyukov CC=golang-codereviews https://golang.org/cl/72450044
-
Anthony Martin authored
The compilers expect to not be interrupted by floating point exceptions. On Plan 9, every process starts with interrupts enabled for invalid operation, stack overflow, and divide by zero exceptions. LGTM=rsc R=rsc, 0intro CC=golang-codereviews https://golang.org/cl/72750043
-
Anthony Martin authored
Previously, we wrote "kill" to the process control file to kill a program. This is problematic because it doesn't let the program gracefully exit. This matters especially if the process we're killing is a Go program. On Unix, sending SIGKILL to a Go program will automatically kill all runtime threads. On Plan 9, there are no threads so when the program wants to exit it has to somehow signal all of the runtime processes. It can't do this if we mercilessly kill it by writing to it's control file. Instead, we now send it a note to invoke it's note handler and let it perform any cleanup before exiting. LGTM=rsc R=rsc, 0intro CC=golang-codereviews https://golang.org/cl/74440044
-
Anthony Martin authored
On Plan 9, the kernel disallows the use of floating point instructions while handling a note. Previously, we worked around this by using a simple loop in place of memmove. When I added that work-around, I verified that all paths from the note handler didn't end up calling memmove. Now that memclr is using SSE instructions, the same process will have to be done again. Instead of doing that, however, this CL just punts and uses unoptimized functions everywhere on Plan 9. LGTM=rsc R=rsc, 0intro CC=golang-codereviews https://golang.org/cl/73830044
-
Anthony Martin authored
Acid can't produce a stack trace without .frame symbols. Of course, it can only unwind through linear stacks but this is still better than nothing. (I wrote an acid func to do the full unwind a long time ago but lost it and haven't worked up the courage to write it again). Note that these will only be present in the native symbol table for Plan 9 binaries. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/72450045
-
- 12 Mar, 2014 15 commits
-
-
Brad Fitzpatrick authored
LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/72640043
-
Dave Cheney authored
syscall.naclWrite was missing from sys_nacl_386.s This gets ./make.bash passing, but doesn't pass validation. I'm not sure if this is the fault of this change, or validation was broken anyway. LGTM=rsc R=minux.ma, rsc CC=golang-codereviews https://golang.org/cl/74510043
-
Russ Cox authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/74800043
-
Dominik Honnef authored
We were fontifying the wrong part of method declarations LGTM=adonovan R=adonovan CC=golang-codereviews https://golang.org/cl/66120043
-
Rob Pike authored
Fixes #7048. LGTM=dominik.honnef R=golang-codereviews, dominik.honnef CC=golang-codereviews https://golang.org/cl/74280044
-
Dmitriy Vyukov authored
1. Fix the bug that shrinkstack returns memory to heap. This causes growslice to misbehave (it manually initialized blocks, and in efence mode shrinkstack's free leads to partially-initialized blocks coming out of growslice. Which in turn causes GC to crash while treating the garbage as Eface/Iface. 2. Enable efence for stack segments. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews, khr https://golang.org/cl/74080043
-
Dmitriy Vyukov authored
Currently the test fails as: $ go test -v -cpu 1,1,1,1 runtime -test.run=TestStack stack_test.go:1584: Stack inuse: want 4194304, got 18446744073709547520 Update #7468 LGTM=rsc R=golang-codereviews, bradfitz CC=golang-codereviews, khr, rsc https://golang.org/cl/74010043
-
Jan Ziak authored
Fixes #6882 LGTM=iant R=rsc, iant CC=golang-codereviews https://golang.org/cl/72080043
-
Brad Fitzpatrick authored
Per RFC 3875 section 6 rules. Fixes #7198 LGTM=adg R=adg CC=golang-codereviews https://golang.org/cl/68960049
-
Russ Cox authored
The garbage collector uses type information to guide the traversal of the heap. If it sees a field that should be a string, it marks the object pointed at by the string data pointer as visited but does not bother to look at the data, because strings contain bytes, not pointers. If you save s[len(s):] somewhere, though, the string data pointer actually points just beyond the string data; if the string data were exactly the size of an allocated block, the string data pointer would actually point at the next block. It is incorrect to mark that next block as visited and not bother to look at the data, because the next block may be some other type entirely. The fix is to ignore strings with zero length during collection: they are empty and can never become non-empty: the base pointer will never be used again. The handling of slices already does this (but using cap instead of len). This was not a bug in Go 1.2, because until January all string allocations included a trailing NUL byte not included in the length, so s[len(s):] still pointed inside the string allocation (at the NUL). This bug was causing the crashes in test/run.go. Specifically, the parsing of a regexp in package regexp/syntax allocated a []syntax.Inst with rounded size 1152 bytes. In fact it allocated many such slices, because during the processing of test/index2.go it creates thousands of regexps that are all approximately the same complexity. That takes a long time, and test/run works on other tests in other goroutines. One such other test is chan/perm.go, which uses an 1152-byte source file. test/run reads that file into a []byte and then calls strings.Split(string(src), "\n"). The string(src) creates an 1152-byte string - and there's a very good chance of it landing next to one of the many many regexp slices already allocated - and then because the file ends in a \n, strings.Split records the tail empty string as the final element in the slice. A garbage collection happens at this point, the collection finds that string before encountering the []syntax.Inst data it now inadvertently points to, and the []syntax.Inst data is not scanned for the pointers that it contains. Each syntax.Inst contains a []rune, those are missed, and the backing rune arrays are freed for reuse. When the regexp is later executed, the runes being searched for are no longer runes at all, and there is no match, even on text that should match. On 64-bit machines the pointer in the []rune inside the syntax.Inst is larger (along with a few other pointers), pushing the []syntax.Inst backing array into a larger size class, avoiding the collision with chan/perm.go's inadvertently sized file. I expect this was more prevalent on OS X than on Linux or Windows because those managed to run faster or slower and didn't overlap index2.go with chan/perm.go as often. On the ARM systems, we only run one errorcheck test at a time, so index2 and chan/perm would never overlap. It is possible that this bug is the root cause of other crashes as well. For now we only know it is the cause of the test/run crash. Many thanks to Dmitriy for help debugging. Fixes #7344. Fixes #7455. LGTM=r, dvyukov, dave, iant R=golang-codereviews, dave, r, dvyukov, delpontej, iant CC=golang-codereviews, khr https://golang.org/cl/74250043
-
Russ Cox authored
Some of the errorcheck tests have many many identical regexps. Use a map to avoid storing the compiled form many many times in memory. Change the filterRe to a simple string to avoid the expense of those regexps as well. Cuts the time for run.go on index2.go by almost 50x. Noticed during debugging of issue 7344. LGTM=bradfitz R=bradfitz, josharian CC=golang-codereviews https://golang.org/cl/74380043
-
Russ Cox authored
debuglive >= 1 is not the condition under which we start recording messages (we avoid printing for init functions even if debuglive is set). LGTM=bradfitz, iant R=golang-codereviews, bradfitz CC=golang-codereviews, iant, khr https://golang.org/cl/74390043
-
Dhiru Kholia authored
LGTM=iant R=golang-codereviews, iant, bradfitz CC=golang-codereviews, math-nuts https://golang.org/cl/72820044
-
Mikio Hara authored
For now Note, futexsleep and futexwakeup are designed for threads, not for processes. The explicit use of UMTX_OP_WAIT_UINT_PRIVATE and UMTX_OP_WAKE_PRIVATE can avoid unnecessary traversals of VM objects, to hit undiscovered bugs related to VM system on SMP/SMT/NUMA environment. Update #7496 LGTM=iant R=golang-codereviews, gobot, iant, bradfitz CC=golang-codereviews https://golang.org/cl/72760043
-
Mikio Hara authored
Solaris doesn't have struct ip_mreqn, instead it uses struct ip_mreq and struct group_req with struct sockaddr_storage. Also fixes incorrect SockaddrDatalink. Update #7399 LGTM=aram, iant R=golang-codereviews, aram, gobot, iant CC=golang-codereviews https://golang.org/cl/73920043
-
- 11 Mar, 2014 11 commits
-
-
Dave Cheney authored
This CL is a reformulation of CL 73110043 containing only the minimum required to get the nacl builds compiling. LGTM=bradfitz R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/74220043
-
Kay Zhu authored
The comment for 'Clean' function is prepended with spaces instead of a single tab, resulting in visually misaligned comment in the generated documentation. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/73840043
-
Dave Cheney authored
The change to signal_amd64.c from CL 15790043 was not merged correctly. This CL reapplies the change, renaming the file to signal_amd64x.c and adds the appropriate build tags. LGTM=iant, bradfitz R=rsc, iant, bradfitz CC=golang-codereviews https://golang.org/cl/72790043
-
Brad Fitzpatrick authored
LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/74110043
-
Josh Bleecher Snyder authored
The byte that r is or'd into is already 0x7, so the failure to zero r only impacts the generated machine code if the register is > 7. Fixes #7044. LGTM=dave, minux.ma, rsc R=dave, minux.ma, bradfitz, rsc CC=golang-codereviews https://golang.org/cl/73730043
-
Shenghou Ma authored
Fixes #7507. LGTM=agl R=agl CC=golang-codereviews https://golang.org/cl/74090043
-
Dmitriy Vyukov authored
Spans are now private to threads, and the loop is removed from all other functions. Remove it from marknogc for consistency. LGTM=khr, rsc R=golang-codereviews, bradfitz, khr CC=golang-codereviews, khr, rsc https://golang.org/cl/72520043
-
Dmitriy Vyukov authored
LGTM=khr, rsc R=golang-codereviews, bradfitz, khr CC=golang-codereviews, khr, rsc https://golang.org/cl/72480044
-
Alex Brainman authored
Not many windows users have perl installed. They can just use standard go tools instead. Also mkerrors_windows.sh script removed - we don't add any new "unix" errors to windows syscall package anymore. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://golang.org/cl/41060044
-
Dave Cheney authored
Thanks to Ian for spotting these. runtime.h: define uintreg correctly. stack.c: address warning caused by the type of uintreg being 32 bits on amd64p32. Commentary (mainly for my own use) nacl/amd64p32 defines a machine with 64bit registers, but address space is limited to a 4gb window (the window is placed randomly inside the full 48 bit virtual address space of a process). To cope with this 6c defines _64BIT and _64BITREG. _64BITREG is always defined by 6c, so both GOARCH=amd64 and GOARCH=amd64p32 use 64bit wide registers. However _64BIT itself is only defined when 6c is compiling for amd64 targets. The definition is elided for amd64p32 environments causing int, uint and other arch specific types to revert to their 32bit definitions. LGTM=iant R=iant, rsc, remyoudompheng CC=golang-codereviews https://golang.org/cl/72860046
-
Alan Donovan authored
gc does not report this as an error, but go/types does. (I suspect that constructing a closure counts as a reference to &all in gc's implementation). This is not a tool bug, since the spec doesn't require implementations to implement this check, but it does illustrate that dialect variations are always a nuisance. LGTM=rsc, bradfitz R=bradfitz CC=golang-codereviews, gri, rsc https://golang.org/cl/73850043
-
- 10 Mar, 2014 7 commits
-
-
Keith Randall authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/73720044
-
Brad Fitzpatrick authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/73770043
-
Dave Cheney authored
mem_nacl.c: add SysFault env_posix.c: add nacl to build tag, from CL 15790043 LGTM=remyoudompheng, iant R=rsc, remyoudompheng, iant CC=golang-codereviews https://golang.org/cl/72780043
-
Brad Fitzpatrick authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/73630043
-
Adam Langley authored
Previously, passing a long duration to ParseDuration could result in random, even negative, values. LGTM=r R=golang-codereviews, bradfitz, r CC=golang-codereviews https://golang.org/cl/72120043
-
Rémy Oudompheng authored
LGTM=dave R=rsc, dave, iant CC=golang-codereviews https://golang.org/cl/73160043
-
Mikio Hara authored
Fixes #7496. LGTM=jsing R=golang-codereviews, jsing CC=golang-codereviews https://golang.org/cl/72840043
-
- 09 Mar, 2014 1 commit
-
-
Dave Cheney authored
CL 69340044 requires that syscall.SO_ERROR be defined on all unix like platforms. Add SO_ERROR to the list of dummy constants in sycall/net_nacl.go. LGTM=bradfitz R=iant, rsc, mikioh.mikioh, bradfitz CC=golang-codereviews https://golang.org/cl/73100043
-