From: Richard Hirst <rhirst@linuxcare.com>
To: parisc-linux@thepuffingroup.com
Subject: [parisc-linux] SEGV signal handling bug (dynamic linking)
Date: Fri, 17 Nov 2000 15:39:55 +0000 [thread overview]
Message-ID: <20001117153954.H32715@linuxcare.com> (raw)
Hi,
Don't know if anyone expects this to work yet or not, but:
------------------------- cut -----------------------------
#include <sys/ptrace.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <sys/mman.h>
char *mem;
void sig_handler(int sig)
{
int res;
printf("Trapped!!!\n");
res = mprotect(mem, 4096, PROT_READ|PROT_WRITE);
if (res < 0) {
perror("mprotect");
exit(1);
}
}
void install_handlers(void)
{
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_handler = sig_handler;
sigaction(SIGSEGV, &act, NULL);
}
int main(int argc, char **argv)
{
int res;
mem = malloc(8192);
if (mem == NULL) {
perror("malloc");
exit(1);
}
mem = (char *)(((int)mem + 4095) & ~0x0fff);
res = mprotect(mem, 4096, PROT_READ);
if (res < 0) {
perror("mprotect");
exit(1);
}
install_handlers();
write(1, "Going\n", 6);
mem[24] = 17;
write(1, "Gone\n", 5);
return 0;
}
------------------------- cut -----------------------------
generates:
Going
Bus error
plus the following on the console:
do_page_fault() pid=167 command='ch'
YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001111111100001011
r0-3 00000000 fffff000 0000166f 00002944
r4-7 40138c38 2001fd8c 00002852 00000001
r8-11 00002862 0008b010 0009c290 0009cbf0
r12-15 00000000 00000000 0009cb50 00000000
r16-19 00000000 00000001 0000b71b 00000011
r20-23 00004000 40041fcc 40041fcc 00000008
r24-27 00000006 00001000 00000001 0000280c
r28-31 00000006 00000020 20020140 40041fd7
sr0-4 00000000 00000003 00000000 0000000a
sr4-8 0000000a 0000000a 0000000a 0000000a
IASQ: 0000000a 0000000a IAOQ: 0000167b 0000167f
IIR: 6293002e ISR: 0000000a IOR: 00004017
ORIG_R28: 00002880
!!die_if_kernel: ch(167): Unaligned data reference 28
YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000011001111111100001011
r0-3 00000000 fffff000 20020140 00002944
r4-7 40138c38 2001fd8c 00002852 00000001
r8-11 00002862 0008b010 0009c290 0009cbf0
r12-15 00000000 00000000 0009cb50 00000000
r16-19 00000000 00000001 0000b71b 00000000
r20-23 0000289f 40041fcc 40041fcc 00000008
r24-27 200201d0 20020150 0000000b 0000280c
r28-31 00000006 00000020 200203c0 40041fd7
sr0-4 00000000 00000003 00000000 0000000a
sr4-8 0000000a 0000000a 0000000a 0000000a
IASQ: 0000000a 0000000a IAOQ: 0000289b 0000289b
IIR: 0e801096 ISR: 0000000a IOR: 0000289f
ORIG_R28: 00002880
The first do_page_fault() is fine, it is the 'mem[24] = 17' line,
but the second isn't. The corresponding code is at the end of
.plt:
2898: 0e 80 10 96 ldw 0(sr0,r20),r22
289c: ea c0 c0 00 bv r0(r22)
28a0: 0e 88 10 95 ldw 4(sr0,r20),r21
28a4: ea 9f 1f dd b,l 2898 <__DTOR_END__+0x74>,r20
28a8: d6 80 1c 1e depwi 0,31,2,r20
28ac: 00 c0 ff ee # c0ffee
28b0: de ad be ef #deadbeef
However, if I make it statically linked, it works fine, giving:
Going
Trapped!!!
Gone
Richard
next reply other threads:[~2000-11-17 15:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-11-17 15:39 Richard Hirst [this message]
2000-11-17 17:09 ` [parisc-linux] SEGV signal handling bug (dynamic linking) Ulrich Drepper
2000-11-17 17:38 ` Richard Hirst
2000-11-17 18:06 ` Ulrich Drepper
2000-11-17 20:10 ` Richard Hirst
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20001117153954.H32715@linuxcare.com \
--to=rhirst@linuxcare.com \
--cc=parisc-linux@thepuffingroup.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox