Bug 14564 - ./common/linux-ptrace.c:117: internal-error: linux_ptrace_test_ret_to_nx: Assertion `WIFSTOPPED (status)' failed.
Summary: ./common/linux-ptrace.c:117: internal-error: linux_ptrace_test_ret_to_nx: Ass...
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: gdb (show other bugs)
Version: 7.5
: P2 normal
Target Milestone: ---
Assignee: Jan Kratochvil
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-09 08:39 UTC by Anton Kochkov
Modified: 2024-01-01 05:56 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
Detection of PaX, also on x86_64. (1.55 KB, patch)
2012-09-09 12:21 UTC, Jan Kratochvil
Details | Diff
Fixed patch. (1.56 KB, patch)
2012-09-09 13:54 UTC, Jan Kratochvil
Details | Diff
Patch #3. (1.24 KB, patch)
2012-09-09 14:14 UTC, Jan Kratochvil
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Kochkov 2012-09-09 08:39:58 UTC
Here is full session log:

┌─[ xvilka@XLaptop ] [ 4:08:44 ] ~ 
└>gdb gdb
GNU gdb (Gentoo 7.5 p1) 7.5
Copyright (C) 2012 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 "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /usr/bin/gdb...(no debugging symbols found)...done.
(gdb) run elinks
Starting program: /usr/bin/gdb elinks
./common/linux-ptrace.c:117: internal-error: linux_ptrace_test_ret_to_nx: Assertion `WIFSTOPPED (status)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
./common/linux-ptrace.c:117: internal-error: linux_ptrace_test_ret_to_nx: Assertion `WIFSTOPPED (status)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) N
(gdb) n
Cannot execute this command while the selected thread is running.
(gdb) q
A debugging session is active.

	Inferior 1 [process 4439] will be killed.

Quit anyway? (y or n) y

Here is uname:
Linux XLaptop 3.5.1-hardened #1 PREEMPT Sun Aug 12 16:29:19 MSK 2012 i686 Intel(R) Celeron(R) CPU 743 @ 1.30GHz GenuineIntel GNU/Linux

Here is part of dmesg (PaX) error:

[2396058.354252] PAX: execution attempt in: <anonymous mapping>, aa1d2000-aa1d5000 aa1d2000
[2396058.354259] PAX: terminating task: /usr/bin/gdb(gdb):15808, uid/euid: 1000/1000, PC: aa1d2000, SP: bb6d5690
[2396058.354262] PAX: bytes at PC: cc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
[2396058.354276] PAX: bytes at SP-4: aa1d2000 00000000 00000000 00000000 00000000 ffffffff 00000000 00000000 176cba91 00004200 00003dbd 00000000 0000003f 00003dbd 
00003dbd 00000000 cc6c4300 00003dbd 00003dbd 00000000 186d46f4 
[2396058.354319] grsec: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/bin/gdb[gdb:15808] uid/euid:1000/1000 
gid/egid:1000/1000, parent /usr/bin/gdb[gdb:15802] uid/euid:1000/1000 gid/egid:1000/1000
[2400796.221781] PAX: execution attempt in: <anonymous mapping>, a486b000-a486e000 a486b000
[2400796.221789] PAX: terminating task: /usr/bin/gdb(gdb):4442, uid/euid: 1000/1000, PC: a486b000, SP: b4bb9440
[2400796.221792] PAX: bytes at PC: cc 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
[2400796.221807] PAX: bytes at SP-4: a486b000 00000000 00000000 00000000 00000000 ffffffff 00000000 00000000 16505a91 00004200 00001157 00000000 0000003f 00001157 
00001157 00000000 4742b000 00001157 00001157 00000000 1750e6f4 
[2400796.221846] grsec: denied resource overstep by requesting 4096 for RLIMIT_CORE against limit 0 for /usr/bin/gdb[gdb:4442] uid/euid:1000/1000 
gid/egid:1000/1000, parent /usr/bin/gdb[gdb:4437] uid/euid:1000/1000 gid/egid:1000/1000
Comment 1 Anton Kochkov 2012-09-09 08:42:18 UTC
7.4 version works well, without this bug
Comment 2 Anton Kochkov 2012-09-09 09:39:08 UTC
When add printf("status=%lx", status); before gdb_assert(WIFSTOPPED(status)); in gdb/common/linux-ptrace.c in function linux_ptrace_test_ret_to_nx() it show 
"status=9" before /common/linux-ptrace.c:117: internal-error: linux_ptrace_test_ret_to_nx: Assertion `WIFSTOPPED (status)' failed.
Comment 3 Jan Kratochvil 2012-09-09 12:21:48 UTC
Created attachment 6629 [details]
Detection of PaX, also on x86_64.

Could you check if this patch works?  It would be nice to test it also on x86_64.
Downloading some gentoo .iso but not sure how it will work for me.
Comment 4 Anton Kochkov 2012-09-09 13:50:13 UTC
(In reply to comment #3)
> Created attachment 6629 [details]
> Detection of PaX, also on x86_64.
> 
> Could you check if this patch works?  It would be nice to test it also on
> x86_64.
> Downloading some gentoo .iso but not sure how it will work for me.

With applied patch:

└>gdb `which elinks`
GNU gdb (Gentoo 7.5 p1) 7.5
Copyright (C) 2012 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 "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /usr/bin/elinks...(no debugging symbols found)...done.
(gdb) run http://google.com
Starting program: /usr/bin/elinks http://google.com
./common/linux-ptrace.c:136: internal-error: linux_ptrace_test_ret_to_nx: Assertion `WIFSIGNALED (status) == SIGKILL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
Comment 5 Jan Kratochvil 2012-09-09 13:54:29 UTC
Created attachment 6630 [details]
Fixed patch.
Comment 6 Anton Kochkov 2012-09-09 14:09:47 UTC
(In reply to comment #5)
> Created attachment 6630 [details]
> Fixed patch.

Now I have this output:

┌─[ xvilka@XLaptop ] [12:09:19 ] ~/gdb-bug 
└>gdb `which elinks`
GNU gdb (Gentoo 7.5 p1) 7.5
Copyright (C) 2012 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 "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /usr/bin/elinks...(no debugging symbols found)...done.
(gdb) run http://google.com
Starting program: /usr/bin/elinks http://google.com
warning: linux_ptrace_test_ret_to_nx: Cannot PTRACE_KILL: No such process
warning: Cannot call inferior functions, Linux kernel PaX protection forbids return to non-executable pages!
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0xa9249d93 in GC_is_black_listed () from /usr/lib/libgc.so.1
(gdb)
Comment 7 Jan Kratochvil 2012-09-09 14:14:44 UTC
Created attachment 6631 [details]
Patch #3.
Comment 8 Anton Kochkov 2012-09-09 14:36:41 UTC
(In reply to comment #7)
> Created attachment 6631 [details]
> Patch #3.

Yes, it works:


┌─[ xvilka@XLaptop ] [12:09:19 ] ~/gdb-bug 
└>gdb `which elinks`
GNU gdb (Gentoo 7.5 p1) 7.5
Copyright (C) 2012 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 "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /usr/bin/elinks...(no debugging symbols found)...done.
(gdb) run http://google.com
Starting program: /usr/bin/elinks http://google.com
warning: Cannot call inferior functions, Linux kernel PaX protection forbids return to non-executable pages!
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x9d11ed93 in GC_is_black_listed () from /usr/lib/libgc.so.1
(gdb)
Comment 9 Hannes Domani 2023-12-31 14:55:34 UTC
(In reply to Anton Kochkov from comment #8)
> (In reply to comment #7)
> > Created attachment 6631 [details]
> > Patch #3.
> 
> Yes, it works:

A version of this patch was applied here:
https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=6e3c039e9cd766aae9e300fef549926ef2df2bc9

So can this be closed?
Comment 10 Jan Kratochvil 2024-01-01 05:56:04 UTC
Fixed.