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)
|
#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 pt_regs *regs = regs0;
|
||||||
struct elf_prstatus64 tmp_prstatus;
|
struct elf_prstatus64 tmp_prstatus;
|
||||||
@@ -38,6 +39,9 @@ void arch_fill_prstatus(struct elf_prstatus64 *prstatus, struct thread *thread,
|
|||||||
if (thread->proc->parent) {
|
if (thread->proc->parent) {
|
||||||
prstatus->pr_ppid = thread->proc->parent->pid;
|
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)
|
int arch_get_thread_core_info_size(void)
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
#include <process.h>
|
#include <process.h>
|
||||||
#include <elfcore.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_user_context *uctx = regs0;
|
||||||
struct x86_basic_regs *regs = &uctx->gpr;
|
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_ppid = thread->proc->parent->pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prstatus->pr_info.si_signo = sig;
|
||||||
|
prstatus->pr_cursig = sig;
|
||||||
|
|
||||||
prstatus->pr_reg[0] = _r15;
|
prstatus->pr_reg[0] = _r15;
|
||||||
prstatus->pr_reg[1] = _r14;
|
prstatus->pr_reg[1] = _r14;
|
||||||
prstatus->pr_reg[2] = _r13;
|
prstatus->pr_reg[2] = _r13;
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ int get_prpsinfo_size(void)
|
|||||||
* \param proc A pointer to the current process structure.
|
* \param proc A pointer to the current process structure.
|
||||||
* \param regs0 A pointer to a ihk_mc_user_context_t 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;
|
void *name;
|
||||||
struct elf_prstatus64 *prstatus;
|
struct elf_prstatus64 *prstatus;
|
||||||
@@ -103,7 +103,7 @@ void fill_prstatus(struct note *head, struct thread *thread)
|
|||||||
memcpy(name, "CORE", sizeof("CORE"));
|
memcpy(name, "CORE", sizeof("CORE"));
|
||||||
prstatus = (struct elf_prstatus64 *)(name + align32(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.
|
* \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 thread *thread_iter;
|
||||||
struct mcs_rwlock_node lock;
|
struct mcs_rwlock_node lock;
|
||||||
|
|
||||||
mcs_rwlock_reader_lock_noirq(&proc->threads_lock, &lock);
|
mcs_rwlock_reader_lock_noirq(&proc->threads_lock, &lock);
|
||||||
list_for_each_entry(thread_iter, &proc->threads_list, siblings_list) {
|
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();
|
note += get_prstatus_size();
|
||||||
|
|
||||||
arch_fill_thread_core_info(note, thread_iter,
|
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,
|
int gencore(struct process *proc, struct coretable **coretable, int *chunks,
|
||||||
char *cmdline)
|
char *cmdline, int sig)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
struct coretable *ct = NULL;
|
struct coretable *ct = NULL;
|
||||||
@@ -386,7 +386,7 @@ int gencore(struct process *proc, struct coretable **coretable, int *chunks,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
memset(note, 0, alignednotesize);
|
memset(note, 0, alignednotesize);
|
||||||
fill_note(note, proc, cmdline);
|
fill_note(note, proc, cmdline, sig);
|
||||||
|
|
||||||
/* prgram header for NOTE segment is exceptional */
|
/* prgram header for NOTE segment is exceptional */
|
||||||
ph[0].p_type = PT_NOTE;
|
ph[0].p_type = PT_NOTE;
|
||||||
|
|||||||
@@ -108,7 +108,8 @@ struct note {
|
|||||||
|
|
||||||
/* functions */
|
/* functions */
|
||||||
struct thread;
|
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 int arch_get_thread_core_info_size(void);
|
||||||
extern void arch_fill_thread_core_info(struct note *head,
|
extern void arch_fill_thread_core_info(struct note *head,
|
||||||
struct thread *thread, void *regs);
|
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 gencore(struct process *proc, struct coretable **coretable,
|
||||||
int *chunks, char *cmdline);
|
int *chunks, char *cmdline, int sig);
|
||||||
void freecore(struct coretable **);
|
void freecore(struct coretable **);
|
||||||
struct siginfo;
|
struct siginfo;
|
||||||
typedef struct siginfo siginfo_t;
|
typedef struct siginfo siginfo_t;
|
||||||
@@ -1093,7 +1093,8 @@ int coredump(struct thread *thread, void *regs, int sig)
|
|||||||
goto skip;
|
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);
|
kprintf("%s: ERROR: gencore returned %d\n", __func__, ret);
|
||||||
goto out;
|
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