coredump: Support signal number
Change-Id: If220bcd0865569a566e08aa53cae748fdc6317d0 Refs: #1340
This commit is contained in:
committed by
Masamichi Takagi
parent
11ef2f8092
commit
0c1cae45fe
@ -8,7 +8,8 @@
|
||||
|
||||
#define align32(x) ((((x) + 3) / 4) * 4)
|
||||
|
||||
void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread, void *regs0)
|
||||
void arch_fill_prstatus(struct elf_prstatus64 *prstatus,
|
||||
struct thread *thread, void *regs0, int sig)
|
||||
{
|
||||
struct pt_regs *regs = regs0;
|
||||
struct elf_prstatus64 tmp_prstatus;
|
||||
@ -38,6 +39,9 @@ void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread,
|
||||
if (thread->proc->parent) {
|
||||
prstatus->pr_ppid = thread->proc->parent->pid;
|
||||
}
|
||||
|
||||
prstatus->pr_info.si_signo = sig;
|
||||
prstatus->pr_cursig = sig;
|
||||
}
|
||||
|
||||
int arch_get_thread_core_info_size(void)
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
#include <process.h>
|
||||
#include <elfcore.h>
|
||||
|
||||
void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread, void *regs0)
|
||||
void arch_fill_prstatus(struct elf_prstatus64 *prstatus,
|
||||
struct thread *thread, void *regs0, int sig)
|
||||
{
|
||||
struct x86_user_context *uctx = regs0;
|
||||
struct x86_basic_regs *regs = &uctx->gpr;
|
||||
@ -31,6 +32,9 @@ void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread,
|
||||
prstatus->pr_ppid = thread->proc->parent->pid;
|
||||
}
|
||||
|
||||
prstatus->pr_info.si_signo = sig;
|
||||
prstatus->pr_cursig = sig;
|
||||
|
||||
prstatus->pr_reg[0] = _r15;
|
||||
prstatus->pr_reg[1] = _r14;
|
||||
prstatus->pr_reg[2] = _r13;
|
||||
|
||||
@ -91,7 +91,7 @@ int get_prpsinfo_size(void)
|
||||
* \param proc A pointer to the current process structure.
|
||||
* \param regs0 A pointer to a ihk_mc_user_context_t structure.
|
||||
*/
|
||||
void fill_prstatus(struct note *head, struct thread *thread)
|
||||
void fill_prstatus(struct note *head, struct thread *thread, int sig)
|
||||
{
|
||||
void *name;
|
||||
struct elf_prstatus64 *prstatus;
|
||||
@ -103,7 +103,7 @@ void fill_prstatus(struct note *head, struct thread *thread)
|
||||
memcpy(name, "CORE", sizeof("CORE"));
|
||||
prstatus = (struct elf_prstatus64 *)(name + align32(sizeof("CORE")));
|
||||
|
||||
arch_fill_prstatus(prstatus, thread, thread->coredump_regs);
|
||||
arch_fill_prstatus(prstatus, thread, thread->coredump_regs, sig);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,14 +212,14 @@ int get_note_size(struct process *proc)
|
||||
* \param regs A pointer to a ihk_mc_user_context_t structure.
|
||||
*/
|
||||
|
||||
void fill_note(void *note, struct process *proc, char *cmdline)
|
||||
void fill_note(void *note, struct process *proc, char *cmdline, int sig)
|
||||
{
|
||||
struct thread *thread_iter;
|
||||
struct mcs_rwlock_node lock;
|
||||
|
||||
mcs_rwlock_reader_lock_noirq(&proc->threads_lock, &lock);
|
||||
list_for_each_entry(thread_iter, &proc->threads_list, siblings_list) {
|
||||
fill_prstatus(note, thread_iter);
|
||||
fill_prstatus(note, thread_iter, sig);
|
||||
note += get_prstatus_size();
|
||||
|
||||
arch_fill_thread_core_info(note, thread_iter,
|
||||
@ -272,7 +272,7 @@ void fill_note(void *note, struct process *proc, char *cmdline)
|
||||
*/
|
||||
|
||||
int gencore(struct process *proc, struct coretable **coretable, int *chunks,
|
||||
char *cmdline)
|
||||
char *cmdline, int sig)
|
||||
{
|
||||
int error = 0;
|
||||
struct coretable *ct = NULL;
|
||||
@ -386,7 +386,7 @@ int gencore(struct process *proc, struct coretable **coretable, int *chunks,
|
||||
goto fail;
|
||||
}
|
||||
memset(note, 0, alignednotesize);
|
||||
fill_note(note, proc, cmdline);
|
||||
fill_note(note, proc, cmdline, sig);
|
||||
|
||||
/* prgram header for NOTE segment is exceptional */
|
||||
ph[0].p_type = PT_NOTE;
|
||||
|
||||
@ -108,7 +108,8 @@ struct note {
|
||||
|
||||
/* functions */
|
||||
struct thread;
|
||||
extern void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread, void *regs0);
|
||||
extern void arch_fill_prstatus(struct elf_prstatus64 *prstatus,
|
||||
struct thread *thread, void *regs0, int sig);
|
||||
extern int arch_get_thread_core_info_size(void);
|
||||
extern void arch_fill_thread_core_info(struct note *head,
|
||||
struct thread *thread, void *regs);
|
||||
|
||||
@ -958,7 +958,7 @@ static struct ihk_mc_interrupt_handler query_free_mem_handler = {
|
||||
};
|
||||
|
||||
int gencore(struct process *proc, struct coretable **coretable,
|
||||
int *chunks, char *cmdline);
|
||||
int *chunks, char *cmdline, int sig);
|
||||
void freecore(struct coretable **);
|
||||
struct siginfo;
|
||||
typedef struct siginfo siginfo_t;
|
||||
@ -1093,7 +1093,8 @@ int coredump(struct thread *thread, void *regs, int sig)
|
||||
goto skip;
|
||||
}
|
||||
|
||||
if ((ret = gencore(proc, &coretable, &chunks, proc->saved_cmdline))) {
|
||||
if ((ret = gencore(proc, &coretable, &chunks,
|
||||
proc->saved_cmdline, sig))) {
|
||||
kprintf("%s: ERROR: gencore returned %d\n", __func__, ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
223
test/issues/1340/C1340.sh
Executable file
223
test/issues/1340/C1340.sh
Executable file
@ -0,0 +1,223 @@
|
||||
#!/bin/sh
|
||||
|
||||
USELTP=0
|
||||
USEOSTEST=0
|
||||
|
||||
. ../../common.sh
|
||||
|
||||
arch=`uname -p`
|
||||
if [ -f "./${arch}_config" ]; then
|
||||
. ./${arch}_config
|
||||
else
|
||||
echo "$1 is unexpected arch"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
|
||||
ulimit_c_bk=`ulimit -Sc`
|
||||
# set ulimit -c unlimited to dump core
|
||||
ulimit -c unlimited
|
||||
|
||||
|
||||
issue=1340
|
||||
|
||||
tid=01
|
||||
tname=`printf "C${issue}T%02d" ${tid}`
|
||||
echo "*** ${tname} start *******************************"
|
||||
signum=11
|
||||
if [ "${arch}" = "x86_64" ]; then
|
||||
signame=11
|
||||
elif [ "${arch}" = "aarch_64" ]; then
|
||||
signame=SEGV
|
||||
fi
|
||||
|
||||
echo "** Check signal in coredump. GPE"
|
||||
${MCEXEC} ./segv
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./${tname}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${signame}" ./${tname}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** ${tname} PASSED ******************************"
|
||||
else
|
||||
echo "*** ${tname} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
let tid++
|
||||
echo ""
|
||||
|
||||
idx=0
|
||||
for signum in ${SIG_LIST[@]}
|
||||
do
|
||||
tname=`printf "C${issue}T%02d" ${tid}`
|
||||
echo "*** ${tname} start *******************************"
|
||||
echo "** Check signal in coredump. raise ${signum}"
|
||||
${MCEXEC} ./raise_sig ${signum}
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./${tname}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${NAME_LIST[${idx}]}" ./${tname}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** ${tname} PASSED ******************************"
|
||||
else
|
||||
echo "*** ${tname} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
let tid++
|
||||
echo ""
|
||||
let idx++
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
|
||||
tid=03
|
||||
echo "*** C${issue}T${tid} start *******************************"
|
||||
echo "** Check signal in coredump. raise SIGILL"
|
||||
signum=4
|
||||
${MCEXEC} ./raise_sig ${signum}
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./C${issue}T${tid}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${signum}" ./C${issue}T${tid}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** C${issue}T${tid} PASSED ******************************"
|
||||
else
|
||||
echo "*** C${issue}T${tid} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
echo ""
|
||||
|
||||
tid=04
|
||||
echo "*** C${issue}T${tid} start *******************************"
|
||||
echo "** Check signal in coredump. raise SIGABRT"
|
||||
signum=6
|
||||
${MCEXEC} ./raise_sig ${signum}
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./C${issue}T${tid}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${signum}" ./C${issue}T${tid}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** C${issue}T${tid} PASSED ******************************"
|
||||
else
|
||||
echo "*** C${issue}T${tid} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
echo ""
|
||||
|
||||
tid=05
|
||||
echo "*** C${issue}T${tid} start *******************************"
|
||||
echo "** Check signal in coredump. raise SIGFPE"
|
||||
signum=8
|
||||
${MCEXEC} ./raise_sig ${signum}
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./C${issue}T${tid}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${signum}" ./C${issue}T${tid}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** C${issue}T${tid} PASSED ******************************"
|
||||
else
|
||||
echo "*** C${issue}T${tid} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
echo ""
|
||||
|
||||
tid=06
|
||||
echo "*** C${issue}T${tid} start *******************************"
|
||||
echo "** Check signal in coredump. raise SIGSEGV"
|
||||
signum=11
|
||||
${MCEXEC} ./raise_sig ${signum}
|
||||
|
||||
# Find mccore*
|
||||
CORE=`ls -1 | grep "^mccore"`
|
||||
|
||||
if [ ! -z $CORE ]; then
|
||||
echo "[ OK ] core for McKernel process found"
|
||||
else
|
||||
echo "[ NG ] core for McKernel process not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gdb ./segv --core=./${CORE} -x ./cmd/C${issue}.cmd 2>/dev/null \
|
||||
| tee ./C${issue}T${tid}.txt
|
||||
|
||||
num=`grep "Program terminated with signal ${signum}" ./C${issue}T${tid}.txt | wc -l`
|
||||
|
||||
if [ ${num} -eq 1 ]; then
|
||||
echo "*** C${issue}T${tid} PASSED ******************************"
|
||||
else
|
||||
echo "*** C${issue}T${tid} FAILED ******************************"
|
||||
fi
|
||||
# clean corefils
|
||||
rm ./mccore* ./core.*
|
||||
echo ""
|
||||
|
||||
# restore ulimit -c
|
||||
ulimit -c ${ulimit_c_bk}
|
||||
11
test/issues/1340/Makefile
Normal file
11
test/issues/1340/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
CFLAGS=-g
|
||||
LDFLAGS=
|
||||
|
||||
TARGET=segv raise_sig
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
test: all
|
||||
./C1340.sh
|
||||
clean:
|
||||
rm -f $(TARGET) *.o mccore* core.* *.txt
|
||||
39
test/issues/1340/README
Normal file
39
test/issues/1340/README
Normal file
@ -0,0 +1,39 @@
|
||||
【Issue#1340 動作確認】
|
||||
□ テスト内容
|
||||
1. coredumpに契機となったシグナル情報が含まれていることを確認
|
||||
|
||||
C1340T01: プログラム中でSEGVが発生した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 11
|
||||
|
||||
C1340T02: raise() で自身にシグナル3 (SIGQUIT) を送信した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 3
|
||||
|
||||
C1340T03: raise() で自身にシグナル4 (SIGILL) を送信した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 4
|
||||
|
||||
C1340T04: raise() で自身にシグナル6 (SIGABRT) を送信した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 6
|
||||
|
||||
C1340T05: raise() で自身にシグナル8 (SIGFPE) を送信した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 8
|
||||
|
||||
C1340T06: raise() で自身にシグナル11 (SIGSEGV) を送信した場合
|
||||
gdbでcoredumpを読み込んだ際、下記が出力されることを確認
|
||||
Program terminated with signal 11
|
||||
|
||||
□ 実行手順
|
||||
$ make test
|
||||
|
||||
McKernelのインストール先や、OSTEST, LTPの配置場所は、
|
||||
$HOME/.mck_test_config を参照している
|
||||
.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを
|
||||
$HOMEにコピーし、適宜編集する
|
||||
|
||||
□ 実行結果
|
||||
result_x86_64.log および result_aarch64.log 参照。
|
||||
すべての項目をPASSしていることを確認。
|
||||
3
test/issues/1340/aarch64_config
Normal file
3
test/issues/1340/aarch64_config
Normal file
@ -0,0 +1,3 @@
|
||||
SIG_LIST=(3 4 6 8 11)
|
||||
NAME_LIST=(SIGQUIT SIGILL SIGABRT SIGFPE SIGSEGV)
|
||||
|
||||
2
test/issues/1340/cmd/C1340.cmd
Normal file
2
test/issues/1340/cmd/C1340.cmd
Normal file
@ -0,0 +1,2 @@
|
||||
quit
|
||||
|
||||
15
test/issues/1340/raise_sig.c
Normal file
15
test/issues/1340/raise_sig.c
Normal file
@ -0,0 +1,15 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int sig = 0;
|
||||
|
||||
sig = atoi(argv[1]);
|
||||
raise(sig);
|
||||
|
||||
printf("Send sig %d to self\n", sig);
|
||||
|
||||
return 0;
|
||||
}
|
||||
168
test/issues/1340/result_aarch64.log
Normal file
168
test/issues/1340/result_aarch64.log
Normal file
@ -0,0 +1,168 @@
|
||||
*** C1340T01 start *******************************
|
||||
** Check signal in coredump. GPE
|
||||
Terminate by signal 11
|
||||
./C1340.sh: line 37: 18499 Segmentation fault (core dumped) ${MCEXEC} ./segv
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18499]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGSEGV, Segmentation fault.
|
||||
#0 0x00000000004005fc in main (argc=1, argv=0x3ffffffffe08) at segv.c:8
|
||||
8 *ptr = 0xdead;
|
||||
*** C1340T01 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
|
||||
*** C1340T02 start *******************************
|
||||
** Check signal in coredump. raise 3
|
||||
Terminate by signal 3
|
||||
./C1340.sh: line 65: 18535 Quit (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18535]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGQUIT, Quit.
|
||||
#0 0x0000100000036d0c in raise () from /usr/lib64/libc.so.6
|
||||
*** C1340T02 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
|
||||
*** C1340T03 start *******************************
|
||||
** Check signal in coredump. raise 4
|
||||
Terminate by signal 4
|
||||
./C1340.sh: line 65: 18571 Illegal instruction (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18571]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGILL, Illegal instruction.
|
||||
#0 0x0000100000036d0c in raise () from /usr/lib64/libc.so.6
|
||||
*** C1340T03 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
|
||||
*** C1340T04 start *******************************
|
||||
** Check signal in coredump. raise 6
|
||||
Terminate by signal 6
|
||||
./C1340.sh: line 65: 18606 Aborted (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18606]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGABRT, Aborted.
|
||||
#0 0x0000100000036d0c in raise () from /usr/lib64/libc.so.6
|
||||
*** C1340T04 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
|
||||
*** C1340T05 start *******************************
|
||||
** Check signal in coredump. raise 8
|
||||
Terminate by signal 8
|
||||
./C1340.sh: line 65: 18641 Floating point exception(core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18641]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGFPE, Arithmetic exception.
|
||||
#0 0x0000100000036d0c in raise () from /usr/lib64/libc.so.6
|
||||
*** C1340T05 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
|
||||
*** C1340T06 start *******************************
|
||||
** Check signal in coredump. raise 11
|
||||
Terminate by signal 11
|
||||
./C1340.sh: line 65: 18676 Segmentation fault (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-3.el8
|
||||
Copyright (C) 2018 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 "aarch64-redhat-linux-gnu".
|
||||
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 ./segv...done.
|
||||
[New LWP 18676]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal SIGSEGV, Segmentation fault.
|
||||
#0 0x0000100000036d0c in raise () from /usr/lib64/libc.so.6
|
||||
*** C1340T06 PASSED ******************************
|
||||
rm: cannot remove './core.*': No such file or directory
|
||||
126
test/issues/1340/result_x86_64.log
Normal file
126
test/issues/1340/result_x86_64.log
Normal file
@ -0,0 +1,126 @@
|
||||
*** C1340T01 start *******************************
|
||||
** Check signal in coredump. GPE
|
||||
Terminate by signal 11
|
||||
./C1340.sh: line 37: 14591 Segmentation fault (core dumped) ${MCEXEC} ./segv
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14591]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 11, Segmentation fault.
|
||||
#0 0x0000000000400504 in main (argc=1, argv=0x547ffffffd08) at segv.c:8
|
||||
8 *ptr = 0xdead;
|
||||
*** C1340T01 PASSED ******************************
|
||||
|
||||
*** C1340T02 start *******************************
|
||||
** Check signal in coredump. raise 3
|
||||
Terminate by signal 3
|
||||
./C1340.sh: line 65: 14633 Quit (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14633]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 3, Quit.
|
||||
#0 0x00002aaaaaa50277 in raise () from /lib64/libc.so.6
|
||||
*** C1340T02 PASSED ******************************
|
||||
|
||||
*** C1340T03 start *******************************
|
||||
** Check signal in coredump. raise 4
|
||||
Terminate by signal 4
|
||||
./C1340.sh: line 65: 14675 Illegal instruction (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14675]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 4, Illegal instruction.
|
||||
#0 0x00002aaaaaa50277 in raise () from /lib64/libc.so.6
|
||||
*** C1340T03 PASSED ******************************
|
||||
|
||||
*** C1340T04 start *******************************
|
||||
** Check signal in coredump. raise 6
|
||||
Terminate by signal 6
|
||||
./C1340.sh: line 65: 14717 Aborted (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14717]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 6, Aborted.
|
||||
#0 0x00002aaaaaa50277 in raise () from /lib64/libc.so.6
|
||||
*** C1340T04 PASSED ******************************
|
||||
|
||||
*** C1340T05 start *******************************
|
||||
** Check signal in coredump. raise 8
|
||||
Terminate by signal 8
|
||||
./C1340.sh: line 65: 14759 Floating point exception(core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14759]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 8, Arithmetic exception.
|
||||
#0 0x00002aaaaaa50277 in raise () from /lib64/libc.so.6
|
||||
*** C1340T05 PASSED ******************************
|
||||
|
||||
*** C1340T06 start *******************************
|
||||
** Check signal in coredump. raise 11
|
||||
Terminate by signal 11
|
||||
./C1340.sh: line 65: 14801 Segmentation fault (core dumped) ${MCEXEC} ./raise_sig ${signum}
|
||||
[ OK ] core for McKernel process found
|
||||
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
|
||||
Copyright (C) 2013 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 "x86_64-redhat-linux-gnu".
|
||||
For bug reporting instructions, please see:
|
||||
<http://www.gnu.org/software/gdb/bugs/>...
|
||||
Reading symbols from /home/satoken/mck_srcs/kyokaIII/mckernel/test/issues/1340/segv...done.
|
||||
[New LWP 14801]
|
||||
Core was generated by `'.
|
||||
Program terminated with signal 11, Segmentation fault.
|
||||
#0 0x00002aaaaaa50277 in raise () from /lib64/libc.so.6
|
||||
*** C1340T06 PASSED ******************************
|
||||
11
test/issues/1340/segv.c
Normal file
11
test/issues/1340/segv.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int *ptr = NULL;
|
||||
|
||||
*ptr = 0xdead;
|
||||
|
||||
return 0;
|
||||
}
|
||||
3
test/issues/1340/x86_64_config
Normal file
3
test/issues/1340/x86_64_config
Normal file
@ -0,0 +1,3 @@
|
||||
SIG_LIST=(3 4 6 8 11)
|
||||
NAME_LIST=(3 4 6 8 11)
|
||||
|
||||
Reference in New Issue
Block a user