* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
@ 2009-11-03 18:49 ` ebotcazou at gcc dot gnu dot org
2009-11-04 10:29 ` rguenth at gcc dot gnu dot org
` (7 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2009-11-03 18:49 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from ebotcazou at gcc dot gnu dot org 2009-11-03 18:49 -------
Somewhat expected, see the comment in the test. A patch to disable it on this
platform (sparc*-*-solaris2.11) is pre-approved.
The failure very likely means that the 64-bit pattern matching code of the
fallback routine in config/sparc/sol2-unwind.h misbehaves for Solaris 11.
Unfortunately, I don't have access to any Solaris 11 machine so I cannot fix.
To debug this, you need to recompile libgcc at -O0 -g and put a breakpoint on
sparc64_fallback_frame_state from within the debugger; it will be hit once you
resume execution after the SIGSEGV. What happens from that on?
--
ebotcazou at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-11-03 18:49:44
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
2009-11-03 18:49 ` [Bug ada/41929] " ebotcazou at gcc dot gnu dot org
@ 2009-11-04 10:29 ` rguenth at gcc dot gnu dot org
2009-11-04 11:19 ` ebotcazou at gcc dot gnu dot org
` (6 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-11-04 10:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rguenth at gcc dot gnu dot org 2009-11-04 10:29 -------
I see the same on x86_64-linux
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
2009-11-03 18:49 ` [Bug ada/41929] " ebotcazou at gcc dot gnu dot org
2009-11-04 10:29 ` rguenth at gcc dot gnu dot org
@ 2009-11-04 11:19 ` ebotcazou at gcc dot gnu dot org
2009-11-04 11:49 ` rguenther at suse dot de
` (5 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2009-11-04 11:19 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:19 -------
> I see the same on x86_64-linux
That would be surprising, nothing has changed since they were installed. Are
you sure it's not gnat.dg/stack_check1.adb instead? It passes on my machine,
both 32-bit and 64-bit mode, but I can imagine that this may be different on
yours.
--
ebotcazou at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (2 preceding siblings ...)
2009-11-04 11:19 ` ebotcazou at gcc dot gnu dot org
@ 2009-11-04 11:49 ` rguenther at suse dot de
2009-11-04 11:57 ` ebotcazou at gcc dot gnu dot org
` (4 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: rguenther at suse dot de @ 2009-11-04 11:49 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from rguenther at suse dot de 2009-11-04 11:49 -------
Subject: Re: 64-bit null_pointer_deref1 gnat.dg test consumes
all available memory
On Wed, 4 Nov 2009, ebotcazou at gcc dot gnu dot org wrote:
> ------- Comment #3 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:19 -------
> > I see the same on x86_64-linux
>
> That would be surprising, nothing has changed since they were installed. Are
> you sure it's not gnat.dg/stack_check1.adb instead? It passes on my machine,
> both 32-bit and 64-bit mode, but I can imagine that this may be different on
> yours.
Running target unix//-m32
FAIL: gnat.dg/null_pointer_deref1.adb execution test
the 64bit variant passes.
the log just states
raised STORAGE_ERROR : stack overflow (or erroneous memory access)
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (3 preceding siblings ...)
2009-11-04 11:49 ` rguenther at suse dot de
@ 2009-11-04 11:57 ` ebotcazou at gcc dot gnu dot org
2009-11-04 13:13 ` rguenther at suse dot de
` (3 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: ebotcazou at gcc dot gnu dot org @ 2009-11-04 11:57 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:57 -------
> Running target unix//-m32
> FAIL: gnat.dg/null_pointer_deref1.adb execution test
>
> the 64bit variant passes.
>
> the log just states
>
> raised STORAGE_ERROR : stack overflow (or erroneous memory access)
OK, thanks for the clarification. Which kernel do you run? Does the following
patch help?
Index: config/i386/linux-unwind.h
===================================================================
--- config/i386/linux-unwind.h (revision 153778)
+++ config/i386/linux-unwind.h (working copy)
@@ -172,6 +172,25 @@ x86_fallback_frame_state (struct _Unwind
fs->signal_frame = 1;
return _URC_NO_REASON;
}
+
+#define MD_FROB_UPDATE_CONTEXT x86_frob_update_context
+
+/* Fix up for kernels that have vDSO, but don't have S flag in it. */
+
+static void
+x86_frob_update_context (struct _Unwind_Context *context,
+ _Unwind_FrameState *fs ATTRIBUTE_UNUSED)
+{
+ unsigned char *pc = context->ra;
+
+ /* movl $__NR_rt_sigreturn,%eax ; {int $0x80 | syscall} */
+ if (*(unsigned char *)(pc+0) == 0xb8
+ && *(unsigned int *)(pc+1) == 173
+ && (*(unsigned short *)(pc+5) == 0x80cd
+ || *(unsigned short *)(pc+5) == 0x050f))
+ _Unwind_SetSignalFrame (context, 1);
+}
+
#endif /* not glibc 2.0 */
#endif /* ifdef __x86_64__ */
#endif /* ifdef inhibit_libc */
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (4 preceding siblings ...)
2009-11-04 11:57 ` ebotcazou at gcc dot gnu dot org
@ 2009-11-04 13:13 ` rguenther at suse dot de
2009-11-04 21:51 ` rguenther at suse dot de
` (2 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: rguenther at suse dot de @ 2009-11-04 13:13 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from rguenther at suse dot de 2009-11-04 13:12 -------
Subject: Re: 64-bit null_pointer_deref1 gnat.dg test consumes
all available memory
On Wed, 4 Nov 2009, ebotcazou at gcc dot gnu dot org wrote:
> ------- Comment #5 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:57 -------
> > Running target unix//-m32
> > FAIL: gnat.dg/null_pointer_deref1.adb execution test
> >
> > the 64bit variant passes.
> >
> > the log just states
> >
> > raised STORAGE_ERROR : stack overflow (or erroneous memory access)
>
> OK, thanks for the clarification. Which kernel do you run? Does the following
> patch help?
I run 2.6.16.42-0.6-smp, that is some old SLES10 kernel.
I'll test if the patch helps.
Richard.
> Index: config/i386/linux-unwind.h
> ===================================================================
> --- config/i386/linux-unwind.h (revision 153778)
> +++ config/i386/linux-unwind.h (working copy)
> @@ -172,6 +172,25 @@ x86_fallback_frame_state (struct _Unwind
> fs->signal_frame = 1;
> return _URC_NO_REASON;
> }
> +
> +#define MD_FROB_UPDATE_CONTEXT x86_frob_update_context
> +
> +/* Fix up for kernels that have vDSO, but don't have S flag in it. */
> +
> +static void
> +x86_frob_update_context (struct _Unwind_Context *context,
> + _Unwind_FrameState *fs ATTRIBUTE_UNUSED)
> +{
> + unsigned char *pc = context->ra;
> +
> + /* movl $__NR_rt_sigreturn,%eax ; {int $0x80 | syscall} */
> + if (*(unsigned char *)(pc+0) == 0xb8
> + && *(unsigned int *)(pc+1) == 173
> + && (*(unsigned short *)(pc+5) == 0x80cd
> + || *(unsigned short *)(pc+5) == 0x050f))
> + _Unwind_SetSignalFrame (context, 1);
> +}
> +
> #endif /* not glibc 2.0 */
> #endif /* ifdef __x86_64__ */
> #endif /* ifdef inhibit_libc */
>
>
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (5 preceding siblings ...)
2009-11-04 13:13 ` rguenther at suse dot de
@ 2009-11-04 21:51 ` rguenther at suse dot de
2010-01-08 19:03 ` ro at gcc dot gnu dot org
2010-01-12 12:08 ` ro at CeBiTec dot Uni-Bielefeld dot DE
8 siblings, 0 replies; 14+ messages in thread
From: rguenther at suse dot de @ 2009-11-04 21:51 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from rguenther at suse dot de 2009-11-04 21:51 -------
Subject: Re: 64-bit null_pointer_deref1 gnat.dg test consumes
all available memory
On Wed, 4 Nov 2009, rguenther at suse dot de wrote:
> ------- Comment #6 from rguenther at suse dot de 2009-11-04 13:12 -------
> Subject: Re: 64-bit null_pointer_deref1 gnat.dg test consumes
> all available memory
>
> On Wed, 4 Nov 2009, ebotcazou at gcc dot gnu dot org wrote:
>
> > ------- Comment #5 from ebotcazou at gcc dot gnu dot org 2009-11-04 11:57 -------
> > > Running target unix//-m32
> > > FAIL: gnat.dg/null_pointer_deref1.adb execution test
> > >
> > > the 64bit variant passes.
> > >
> > > the log just states
> > >
> > > raised STORAGE_ERROR : stack overflow (or erroneous memory access)
> >
> > OK, thanks for the clarification. Which kernel do you run? Does the following
> > patch help?
>
> I run 2.6.16.42-0.6-smp, that is some old SLES10 kernel.
>
> I'll test if the patch helps.
It fixed the failure for me.
Richard.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (6 preceding siblings ...)
2009-11-04 21:51 ` rguenther at suse dot de
@ 2010-01-08 19:03 ` ro at gcc dot gnu dot org
2010-01-12 12:08 ` ro at CeBiTec dot Uni-Bielefeld dot DE
8 siblings, 0 replies; 14+ messages in thread
From: ro at gcc dot gnu dot org @ 2010-01-08 19:03 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from ro at gcc dot gnu dot org 2010-01-08 19:03 -------
Subject: Bug 41929
Author: ro
Date: Fri Jan 8 19:02:51 2010
New Revision: 155743
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155743
Log:
PR ada/41929
* gnat.dg/null_pointer_deref1.adb: Don't run on
sparc*-sun-solaris2.11.
Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gnat.dg/null_pointer_deref1.adb
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
2009-11-03 18:22 [Bug ada/41929] New: 64-bit null_pointer_deref1 gnat.dg test consumes all available memory ro at gcc dot gnu dot org
` (7 preceding siblings ...)
2010-01-08 19:03 ` ro at gcc dot gnu dot org
@ 2010-01-12 12:08 ` ro at CeBiTec dot Uni-Bielefeld dot DE
8 siblings, 0 replies; 14+ messages in thread
From: ro at CeBiTec dot Uni-Bielefeld dot DE @ 2010-01-12 12:08 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from ro at CeBiTec dot Uni-Bielefeld dot DE 2010-01-12 12:08 -------
Subject: Re: 64-bit null_pointer_deref1 gnat.dg test consumes all available
memory
> ------- Comment #1 from ebotcazou at gcc dot gnu dot org 2009-11-03 18:49 -------
> Somewhat expected, see the comment in the test. A patch to disable it on this
> platform (sparc*-*-solaris2.11) is pre-approved.
I've just installed that since the bug hit me again and I've not yet
succeeded in the investigation.
> The failure very likely means that the 64-bit pattern matching code of the
> fallback routine in config/sparc/sol2-unwind.h misbehaves for Solaris 11.
> Unfortunately, I don't have access to any Solaris 11 machine so I cannot fix.
I've checked __sighndlr in the Solaris 11 64-bit libc.so.1 against
sol2-unwind.h (sighndlr_pattern), and they are identical.
> To debug this, you need to recompile libgcc at -O0 -g and put a breakpoint on
> sparc64_fallback_frame_state from within the debugger; it will be hit once you
> resume execution after the SIGSEGV. What happens from that on?
Unfortunately, it doesn't hit:
(gdb) b sparc64_fallback_frame_state
Breakpoint 1 at 0x100017c88: file
/vol/gcc/src/hg/trunk/solaris/libgcc/../gcc/config/sparc/sol2-unwind.h, line
38.
(gdb) run
Starting program:
/vol/gcc/obj/gcc-4.5.0-20100107/11-gcc/gcc/testsuite/gnat/null_pointer_deref1.exe
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 1)]
0x00000001000141b0 in _ada_null_pointer_deref1 ()
(gdb) cont
Continuing.
Program received signal SIGSEGV, Segmentation fault.
0x7fffffff7f8c81d0 in kill () from /lib/64/libc.so.1
(gdb) cont
Continuing.
procfs: couldn't find pid -1 in procinfo list.
So I'm sort of stuck. dbx doesn't allow me to set a breakpoint in
sparc64_fallback_frame_state at all.
Rainer
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
[not found] <bug-41929-4@http.gcc.gnu.org/bugzilla/>
@ 2011-02-14 12:37 ` ro at gcc dot gnu.org
2011-02-14 12:52 ` ro at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 14+ messages in thread
From: ro at gcc dot gnu.org @ 2011-02-14 12:37 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
--- Comment #10 from Rainer Orth <ro at gcc dot gnu.org> 2011-02-14 12:32:15 UTC ---
Author: ro
Date: Mon Feb 14 12:32:11 2011
New Revision: 170126
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=170126
Log:
gcc:
PR ada/41929
* config/sparc/sol2-unwind.h: Include <sys/frame.h>, <sys/stack.h>
(IS_SIGHANDLER): Define.
(sparc64_is_sighandler): New function, split off from
sparc64_fallback_frame_state.
(sparc_is_sighandler): New function, split off from
sparc_fallback_frame_state.
(sparc64_fallback_frame_state): Merge with ...
(sparc_fallback_frame_state): ... this into ...
(MD_FALLBACK_FRAME_STATE_FOR): ... this.
Change new_cfa to long.
Remove regs_off, fpu_save_off, fpu_save.
Define nframes, mctx.
Use IS_SIGHANDLER, handler_args, mctx, walk stack instead of
hardcoded offsets.
gcc/testsuite:
PR ada/41929
* gnat.dg/null_pointer_deref1.exp: Don't skip on
sparc*-sun-solaris2.11.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/sparc/sol2-unwind.h
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gnat.dg/null_pointer_deref1.adb
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
[not found] <bug-41929-4@http.gcc.gnu.org/bugzilla/>
2011-02-14 12:37 ` ro at gcc dot gnu.org
@ 2011-02-14 12:52 ` ro at gcc dot gnu.org
2012-01-09 9:51 ` ebotcazou at gcc dot gnu.org
2012-01-09 9:52 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 14+ messages in thread
From: ro at gcc dot gnu.org @ 2011-02-14 12:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
Rainer Orth <ro at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
AssignedTo|unassigned at gcc dot |ro at gcc dot gnu.org
|gnu.org |
Target Milestone|--- |4.6.0
--- Comment #11 from Rainer Orth <ro at gcc dot gnu.org> 2011-02-14 12:37:43 UTC ---
Mine, fixed for 4.6.0, may backport to 4.5 branch.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
[not found] <bug-41929-4@http.gcc.gnu.org/bugzilla/>
2011-02-14 12:37 ` ro at gcc dot gnu.org
2011-02-14 12:52 ` ro at gcc dot gnu.org
@ 2012-01-09 9:51 ` ebotcazou at gcc dot gnu.org
2012-01-09 9:52 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 14+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2012-01-09 9:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
--- Comment #12 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-01-09 09:50:26 UTC ---
Author: ebotcazou
Date: Mon Jan 9 09:50:19 2012
New Revision: 183005
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183005
Log:
PR ada/41929
* config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove SAVPC and
add CFA. Revert back to old code for Solaris 8+ multi-threaded.
(sparc_is_sighandler): Likewise.
(MD_FALLBACK_FRAME_STATE_FOR): Adjust call to IS_SIGHANDLER.
Modified:
trunk/libgcc/ChangeLog
trunk/libgcc/config/sparc/sol2-unwind.h
^ permalink raw reply [flat|nested] 14+ messages in thread
* [Bug ada/41929] 64-bit null_pointer_deref1 gnat.dg test consumes all available memory
[not found] <bug-41929-4@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2012-01-09 9:51 ` ebotcazou at gcc dot gnu.org
@ 2012-01-09 9:52 ` ebotcazou at gcc dot gnu.org
3 siblings, 0 replies; 14+ messages in thread
From: ebotcazou at gcc dot gnu.org @ 2012-01-09 9:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41929
--- Comment #13 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2012-01-09 09:50:47 UTC ---
Author: ebotcazou
Date: Mon Jan 9 09:50:42 2012
New Revision: 183006
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183006
Log:
PR ada/41929
* config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove SAVPC and
add CFA. Revert back to old code for Solaris 8+ multi-threaded.
(sparc_is_sighandler): Likewise.
(MD_FALLBACK_FRAME_STATE_FOR): Adjust call to IS_SIGHANDLER.
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/config/sparc/sol2-unwind.h
^ permalink raw reply [flat|nested] 14+ messages in thread