This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Recent Go patch fails several tests on 32bit CentOS 5.10


On Fri, Nov 15, 2013 at 12:35 PM, Uros Bizjak <ubizjak@gmail.com> wrote:

>>>>>> panic: runtime error: invalid memory address or nil pointer dereference
>>>>>> [signal 0xb code=0x1 addr=0x1c]
>>>>
>>>>>> FAIL: runtime/pprof
>>>>>> gmake[2]: *** [runtime/pprof/check] Error 1
>>>>>>
>>>>>> This one is new, I have to look into it a bit deeper.
>>>>>
>>>>>
>>>>> I don't know what is happening here.  I can't recreate it.  There was
>>>>> a different problem that could arise in runtime/pprof, that was fixed
>>>>> by a patch I submitted on Saturday
>>>>> (http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01016.html).  So it's
>>>>> possible that this is fixed now.
>>>>
>>>> The failure is specific to !USING_SPLIT_STACK targets:
>>>
>>> The same error triggered on CentOS 5.10 x86_64 (another
>>> !USING_SPLIT_STACK target) for 32bit lib (net, runtime). The panic:
>>> string is the same, only addr=0x9f. There are also a couple of
>>> segfaults (database/sql, net/http) and abort in sync/atomic.
>>
>> Could you check to see if this patch fixes the problem?  Thanks.
>
> Unfortunately, it doesn't.
>
> I still see panic in runtime (trace below), segfault in sync,
> database/sql, net/http and abort in sync/atomic on 32bit CentOS 5.10
> library.
>
> panic: runtime error: invalid memory address or nil pointer dereference
> [signal 0xb code=0x1 addr=0x9f]

These panics, segfaults and aborts are actually all the same:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xf7613bd0 (LWP 1342)]
runqsteal (p=0x7f, p2=0x1830d000) at
../../../../gcc-svn/trunk/libgo/runtime/proc.c:3104
3104                    p->runq[t++] = gp1;
(gdb) bt
#0  runqsteal (p=0x7f, p2=0x1830d000) at
../../../../gcc-svn/trunk/libgo/runtime/proc.c:3104
#1  0xf7a76a65 in findrunnable () at
../../../../gcc-svn/trunk/libgo/runtime/proc.c:1608
#2  schedule () at ../../../../gcc-svn/trunk/libgo/runtime/proc.c:1749
#3  0xf7a76ef6 in runtime_mstart (mp=0x1c150000) at
../../../../gcc-svn/trunk/libgo/runtime/proc.c:1025
#4  0x004bf912 in start_thread () from /lib/libpthread.so.0
#5  0x004297ce in clone () from /lib/libc.so.6
(gdb) list
3099                    if(t2 == h2)
3100                            break;
3101                    gp1 = p2->runq[h2++];
3102                    if(h2 == s2)
3103                            h2 = 0;
3104                    p->runq[t++] = gp1;
3105                    if(t == s)
3106                            t = 0;
3107            }
3108            p->runqtail = t;
(gdb) p p
$1 = (P *) 0x7f

Please note, that sometimes a couple of program invocations are needed
for the segfault to happen.

Uros.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]