Subject: Re: [alpine-aports] [PATCH] community/go: update to go 1.6

From: Nathan Johnson <[email-masked]>
Date: Mon, 22 Feb 2016 15:46:27 -0600

> On Feb 22, 2016, at 11:20 AM, Timo Teras <[email-masked]> wrote:
> 
> On Mon, 22 Feb 2016 11:14:57 -0600
> Nathan Johnson <[email-masked]> wrote:
> 
>>> On Feb 22, 2016, at 9:02 AM, Timo Teras <[email-masked]> wrote:
>>> 
>>> Hi,
>>> 
>>> I applied but reverted it. Seems it does not work properly on x86,
>>> but the build fails. Perhaps go now needs pax marking on x86? Or
>>> it's something else? Any ideas?  
>> 
>> I did manage to find something interesting:
>> 
>> Starting
>> program: /home/njohnson/aports/community/go/src/go/src/cmd/dist/dist
>> warning: Cannot call inferior functions, Linux kernel PaX protection
>> forbids return to non-executable pages!
>> 
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x0809e536 in runtime.setldt ()
>> at /usr/lib/go-bootstrap/src/runtime/sys_linux_386.s:420
>> 420		INT $3 (gdb) quit
>> A debugging session is active.
>> 
>> I’ll keep digging.
> 
> There is comment in the apkbuild that sysctl kernel.modify_ldt=1 is
> required on x86. I wonder if something broke in that regard. Could be
> also kernel side regression.

After setting that sysctl parameter I was able to get further, but ultimately
it still fails.

Feb 22 21:33:09 abuildx86 kern.err kernel: [ 4692.861846] PAX: execution attempt in: <anonymous mapping>, 00000000-0008a000 00000000
Feb 22 21:33:09 abuildx86 kern.err kernel: [ 4692.861853] PAX: terminating task: /home/njohnson/aports/community/go/src/go/bin/go(go):32570, uid/euid: 1002/1002, PC:    (nil), SP: 5adf0038
Feb 22 21:33:09 abuildx86 kern.err kernel: [ 4692.861855] PAX: bytes at PC: ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 
Feb 22 21:33:09 abuildx86 kern.err kernel: [ 4692.861875] PAX: bytes at SP-4: 00000000 0810dd38 080e1f1f 00000000 00002000 5adf0054 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
Feb 22 21:33:09 abuildx86 kern.alert kernel: [ 4692.861897] grsec: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /home/njohnson/aports/community/go/src/go/bin/go[go:32570] uid/euid:1002/1002 gid/egid:1002/1002, parent /bin/busybox[ash:3256

I also can’t seem to attach to the program with gdb:

abuildx86:~/aports/community/go/src/go/bin$ gdb go
GNU gdb (GDB) 7.10.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-alpine-linux-musl".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from go...done.
warning: Missing auto-load script at offset 0 in section .debug_gdb_scripts
of file /home/njohnson/aports/community/go/src/go/bin/go.
Use `info auto-load python-scripts [REGEXP]' to list them.
(gdb) run
Starting program: /home/njohnson/aports/community/go/src/go/bin/go 
warning: Cannot call inferior functions, Linux kernel PaX protection forbids return to non-executable pages!

Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb) 

I’m pretty lost when it comes to PaX .  I did attempt to do a paxctl -m on the binary, but I got this:

abuildx86:/var/log# paxctl -m /home/njohnson/aports/community/go/src/go/bin/go
file /home/njohnson/aports/community/go/src/go/bin/go is not a valid ELF executable (invalid SHT_ entry:22)
abuildx86:/var/log# 

I’m out of ideas at this point.

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Nathan Johnson <[email-masked]>
Date: Mon, 22 Feb 2016 21:31:48 -0600

So as a followup to all of this, I get segfaults even when I boot to a vanilla kernel.

I’m pretty sure there is something fishy in goville for 1.6 on 386.  I’ve posted an issue
on the golang github account, hopefully someone will have some ideas.

https://github.com/golang/go/issues/14476

> On Feb 22, 2016, at 3:46 PM, Nathan Johnson <[email-masked]> wrote:
> 
> 

---