|
Packit Service |
779887 |
# -*- Autotest -*-
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_BANNER([problem report])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## ------- ##
|
|
Packit Service |
779887 |
## summary ##
|
|
Packit Service |
779887 |
## ------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([summary],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const test_format_result[][2] = {
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [abrt] trivial string",
|
|
Packit Service |
779887 |
"[abrt] trivial string"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [abrt] %package%",
|
|
Packit Service |
779887 |
"[abrt] libreport"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [abrt] %package%[[ : %crash_function%()]][[ : %does_not_exist%]][[ : %reason%]][[ TAINTED: %taint_flags%]]",
|
|
Packit Service |
779887 |
"[abrt] libreport : run_event() : Killed by SIGSEGV"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [abrt] %package%[[ : %crash_function%[[ : %does_not_exist%]]()]][[ : %reason%]]",
|
|
Packit Service |
779887 |
"[abrt] libreport : run_event() : Killed by SIGSEGV"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [abrt] %package%[[ : %does_not_exist%[[ : %crash_function%()]]]][[ : %reason%]]",
|
|
Packit Service |
779887 |
"[abrt] libreport : Killed by SIGSEGV"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"%summary:: [[%does_not_exist%]][[%once_more%]][abrt] %package%",
|
|
Packit Service |
779887 |
"[abrt] libreport"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"",
|
|
Packit Service |
779887 |
"Killed by SIGSEGV"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "crash_function", "run_event");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "reason", "Killed by SIGSEGV");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(test_format_result)/sizeof(*test_format_result); ++i) {
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
assert(!problem_formatter_load_string(pf, test_format_result[i][0]));
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
assert(!problem_formatter_generate_report(pf, data, &pr);;
|
|
Packit Service |
779887 |
assert(pr != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *summary = problem_report_get_summary(pr);
|
|
Packit Service |
779887 |
assert(summary != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
fprintf(stderr, "expected: '%s'\n", test_format_result[i][1]);
|
|
Packit Service |
779887 |
fprintf(stderr, "result : '%s'\n", summary);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(strcmp(test_format_result[i][1], summary) == 0);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## ---------- ##
|
|
Packit Service |
779887 |
## desciption ##
|
|
Packit Service |
779887 |
## ---------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([description],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
#include "testsuite.h"
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
const char *const test_format_result[][2] = {
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Single line\n"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n",
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
"Single line\n"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Comment:: %bare_comment"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Ad-hoc line\n"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Additional:: package,\\\n"
|
|
Packit Service |
779887 |
"uuid,cwd\\\\"
|
|
Packit Service |
779887 |
",user_name"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n",
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
"Comment:\n" \
|
|
Packit Service |
779887 |
"Hello, world!\n"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Ad-hoc line\n"
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"\n"\
|
|
Packit Service |
779887 |
"Additional:\n"\
|
|
Packit Service |
779887 |
"package: libreport\n"\
|
|
Packit Service |
779887 |
"uuid: 123456789ABCDEF\n"\
|
|
Packit Service |
779887 |
"user_name: abrt\n",
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
":: %bare_description",
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
"I run will_segfault and\n"\
|
|
Packit Service |
779887 |
"it crashed as expected\n"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"User:: %bare_user_name,uid\n"\
|
|
Packit Service |
779887 |
"Additional info:: -uuid,%oneline,-comment,-package",
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
"User:\n"\
|
|
Packit Service |
779887 |
"abrt\n"\
|
|
Packit Service |
779887 |
"uid: 69\n"\
|
|
Packit Service |
779887 |
"Additional info:\n"\
|
|
Packit Service |
779887 |
"analyzer: CCpp\n"\
|
|
Packit Service |
779887 |
"root: /var/run/mock/abrt\n"\
|
|
Packit Service |
779887 |
"type: CCpp\n"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
":: %reporter",
|
|
Packit Service |
779887 |
NULL /* do no check results*/
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
"Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
"Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"Thread no. 0 (7 frames)\n"
|
|
Packit Service |
779887 |
" #1 crash at will_segfault.c:19\n"
|
|
Packit Service |
779887 |
" #2 varargs at will_segfault.c:31\n"
|
|
Packit Service |
779887 |
" #3 inlined at will_segfault.c:40\n"
|
|
Packit Service |
779887 |
" #4 f at will_segfault.c:45\n"
|
|
Packit Service |
779887 |
" #5 callback at will_segfault.c:50\n"
|
|
Packit Service |
779887 |
" #6 call_me_back at libwillcrash.c:8\n"
|
|
Packit Service |
779887 |
" #7 recursive at will_segfault.c:59\n"
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "analyzer", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "type", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "comment", "Hello, world!");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uuid", "123456789ABCDEF");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uid", "69");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "user_name", "abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "root", "/var/run/mock/abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "description", "I run will_segfault and\nit crashed as expected\n");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "backtrace",
|
|
Packit Service |
779887 |
"Thread 1 (LWP 11865):\n"\
|
|
Packit Service |
779887 |
"#0 printf (__fmt=0x400acf \"Result: %d\\n\") at /usr/include/bits/stdio2.h:104\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#1 crash (p=p@entry=0x0) at will_segfault.c:19\n"\
|
|
Packit Service |
779887 |
"i = <error reading variable i (Cannot access memory at address 0x0)>\n"\
|
|
Packit Service |
779887 |
"#2 0x0000000000400964 in varargs (num_args=1, num_args@entry=2) at will_segfault.c:31\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"ap = {{gp_offset = 24, fp_offset = 32767, overflow_arg_area = 0x7fff4fc8a0c0, reg_save_area = 0x7fff4fc8a080}}\n"\
|
|
Packit Service |
779887 |
"#3 0x00000000004009be in inlined (p=0x0) at will_segfault.c:40\n"\
|
|
Packit Service |
779887 |
"num = 42\n"\
|
|
Packit Service |
779887 |
"#4 f (p=p@entry=0x0) at will_segfault.c:45\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#5 0x00000000004009e9 in callback (data=data@entry=0x0) at will_segfault.c:50\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#6 0x00000032f76006f9 in call_me_back (cb=cb@entry=0x4009e0 <callback>, data=data@entry=0x0) at libwillcrash.c:8\n"\
|
|
Packit Service |
779887 |
"res = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#7 0x0000000000400a14 in recursive (i=i@entry=0) at will_segfault.c:59\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#8 0x0000000000400a00 in recursive (i=i@entry=1) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#9 0x0000000000400a00 in recursive (i=i@entry=2) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#10 0x0000000000400775 in main (argc=<optimized out>, argv=<optimized out>) at will_segfault.c:83\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"From To Syms Read Shared Object Library\n"\
|
|
Packit Service |
779887 |
"0x00000032f76005f0 0x00000032f7600712 Yes /lib64/libwillcrash.so.0\n"\
|
|
Packit Service |
779887 |
"0x0000003245c1f4f0 0x0000003245d6aca4 Yes /lib64/libc.so.6\n"\
|
|
Packit Service |
779887 |
"0x0000003245800b10 0x000000324581b6d0 Yes /lib64/ld-linux-x86-64.so.2\n"\
|
|
Packit Service |
779887 |
"$1 = 0x0\n"
|
|
Packit Service |
779887 |
"No symbol \"__glib_assert_msg\" in current context.\n"\
|
|
Packit Service |
779887 |
"rax 0xf 15\n"\
|
|
Packit Service |
779887 |
"rbx 0x0 0\n"\
|
|
Packit Service |
779887 |
"rcx 0x7ff96f752000 140709293531136\n"\
|
|
Packit Service |
779887 |
"rdx 0x3245fb9a40 215922481728\n"\
|
|
Packit Service |
779887 |
"rsi 0x7ff96f752000 140709293531136\n"\
|
|
Packit Service |
779887 |
"rdi 0x1 1\n"\
|
|
Packit Service |
779887 |
"rbp 0x400a30 0x400a30 <__libc_csu_init>\n"\
|
|
Packit Service |
779887 |
"rsp 0x7fff4fc8a050 0x7fff4fc8a050\n"\
|
|
Packit Service |
779887 |
"r8 0xffffffff 4294967295\n"\
|
|
Packit Service |
779887 |
"r9 0x0 0\n"\
|
|
Packit Service |
779887 |
"r10 0x22 34\n"\
|
|
Packit Service |
779887 |
"r11 0x246 582\n"\
|
|
Packit Service |
779887 |
"r12 0x40079f 4196255\n"\
|
|
Packit Service |
779887 |
"r13 0x7fff4fc8a210 140734531936784\n"\
|
|
Packit Service |
779887 |
"r14 0x0 0\n"\
|
|
Packit Service |
779887 |
"r15 0x0 0\n"\
|
|
Packit Service |
779887 |
"rip 0x4008ae 0x4008ae <crash+14>\n"\
|
|
Packit Service |
779887 |
"eflags 0x10246 [ PF ZF IF RF ]\n"\
|
|
Packit Service |
779887 |
"cs 0x33 51\n"\
|
|
Packit Service |
779887 |
"ss 0x2b 43\n"\
|
|
Packit Service |
779887 |
"ds 0x0 0\n"\
|
|
Packit Service |
779887 |
"es 0x0 0\n"\
|
|
Packit Service |
779887 |
"fs 0x0 0\n"\
|
|
Packit Service |
779887 |
"gs 0x0 0\n"\
|
|
Packit Service |
779887 |
"st0 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st1 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st2 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st3 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st4 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st5 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st6 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st7 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"fctrl 0x37f 895\n"\
|
|
Packit Service |
779887 |
"fstat 0x0 0\n"\
|
|
Packit Service |
779887 |
"ftag 0xffff 65535\n"\
|
|
Packit Service |
779887 |
"fiseg 0x0 0\n"\
|
|
Packit Service |
779887 |
"fioff 0x0 0\n"\
|
|
Packit Service |
779887 |
"foseg 0x0 0\n"\
|
|
Packit Service |
779887 |
"fooff 0x0 0\n"\
|
|
Packit Service |
779887 |
"fop 0x0 0\n"\
|
|
Packit Service |
779887 |
"xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x2f <repeats 16 times>}, v8_int16 = {0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f}, v4_int32 = {0x2f2f2f2f, 0x2f2f2f2f, 0x2f2f2f2f, 0x2f2f2f2f}, v2_int64 = {0x2f2f2f2f2f2f2f2f, 0x2f2f2f2f2f2f2f2f}, uint128 = 0x2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f}\n"\
|
|
Packit Service |
779887 |
"xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 13 times>, 0xff, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff00, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0xff00}, v2_int64 = {0x0, 0xff0000000000}, uint128 = 0x0000ff00000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0xff0000, 0x0}, v2_int64 = {0x0, 0xff0000}, uint128 = 0x0000000000ff00000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm8 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm9 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm10 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm11 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm12 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 14 times>, 0xff, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff}, v4_int32 = {0x0, 0x0, 0x0, 0xff0000}, v2_int64 = {0x0, 0xff000000000000}, uint128 = 0x00ff0000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm13 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm14 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm15 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"mxcsr 0x1f80 [ IM DM ZM OM UM PM ]\n"\
|
|
Packit Service |
779887 |
"Dump of assembler code for function crash:\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a0 <+0>: push %rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a1 <+1>: mov %rdi,%rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a4 <+4>: mov $0x400ac0,%edi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a9 <+9>: callq 0x4006f0 <puts@plt>\n"\
|
|
Packit Service |
779887 |
" => 0x00000000004008ae <+14>: mov (%rbx),%edx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008b0 <+16>: mov $0x400acf,%esi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008b5 <+21>: mov $0x1,%edi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008ba <+26>: xor %eax,%eax\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008bc <+28>: callq 0x400740 <__printf_chk@plt>\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008c1 <+33>: pop %rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008c2 <+34>: retq\n"\
|
|
Packit Service |
779887 |
"End of assembler dump.\n"
|
|
Packit Service |
779887 |
);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(test_format_result)/sizeof(*test_format_result); ++i) {
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
assert(!problem_formatter_load_string(pf, test_format_result[i][0]));
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
assert(!problem_formatter_generate_report(pf, data, &pr);;
|
|
Packit Service |
779887 |
assert(pr != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *summary = problem_report_get_description(pr);
|
|
Packit Service |
779887 |
assert(summary != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (test_format_result[i][1] != NULL) {
|
|
Packit Service |
779887 |
fprintf(stderr, "####\n");
|
|
Packit Service |
779887 |
fprintf(stderr, "expected: '%s'\n", test_format_result[i][1]);
|
|
Packit Service |
779887 |
fprintf(stderr, "====\n");
|
|
Packit Service |
779887 |
fprintf(stderr, "result : '%s'\n", summary);
|
|
Packit Service |
779887 |
fprintf(stderr, "####\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
TS_ASSERT_STRING_EQ(summary, test_format_result[i][1], "Correct summary");
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## --------------- ##
|
|
Packit Service |
779887 |
## short_backtrace ##
|
|
Packit Service |
779887 |
## --------------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([short_backtrace],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
#define BACKTRACE_CONTENT \
|
|
Packit Service |
779887 |
"Thread 1 (LWP 11865):\n"\
|
|
Packit Service |
779887 |
"#0 printf (__fmt=0x400acf \"Result: %d\\n\") at /usr/include/bits/stdio2.h:104\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#1 crash (p=p@entry=0x0) at will_segfault.c:19\n"\
|
|
Packit Service |
779887 |
"i = <error reading variable i (Cannot access memory at address 0x0)>\n"\
|
|
Packit Service |
779887 |
"#2 0x0000000000400964 in varargs (num_args=1, num_args@entry=2) at will_segfault.c:31\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"ap = {{gp_offset = 24, fp_offset = 32767, overflow_arg_area = 0x7fff4fc8a0c0, reg_save_area = 0x7fff4fc8a080}}\n"\
|
|
Packit Service |
779887 |
"#3 0x00000000004009be in inlined (p=0x0) at will_segfault.c:40\n"\
|
|
Packit Service |
779887 |
"num = 42\n"\
|
|
Packit Service |
779887 |
"#4 f (p=p@entry=0x0) at will_segfault.c:45\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#5 0x00000000004009e9 in callback (data=data@entry=0x0) at will_segfault.c:50\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#6 0x00000032f76006f9 in call_me_back (cb=cb@entry=0x4009e0 <callback>, data=data@entry=0x0) at libwillcrash.c:8\n"\
|
|
Packit Service |
779887 |
"res = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#7 0x0000000000400a14 in recursive (i=i@entry=0) at will_segfault.c:59\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#8 0x0000000000400a00 in recursive (i=i@entry=1) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#9 0x0000000000400a00 in recursive (i=i@entry=2) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#10 0x0000000000400775 in main (argc=<optimized out>, argv=<optimized out>) at will_segfault.c:83\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"From To Syms Read Shared Object Library\n"\
|
|
Packit Service |
779887 |
"0x00000032f76005f0 0x00000032f7600712 Yes /lib64/libwillcrash.so.0\n"\
|
|
Packit Service |
779887 |
"0x0000003245c1f4f0 0x0000003245d6aca4 Yes /lib64/libc.so.6\n"\
|
|
Packit Service |
779887 |
"0x0000003245800b10 0x000000324581b6d0 Yes /lib64/ld-linux-x86-64.so.2\n"\
|
|
Packit Service |
779887 |
"$1 = 0x0\n"\
|
|
Packit Service |
779887 |
"No symbol \"__glib_assert_msg\" in current context.\n"\
|
|
Packit Service |
779887 |
"rax 0xf 15\n"\
|
|
Packit Service |
779887 |
"rbx 0x0 0\n"\
|
|
Packit Service |
779887 |
"rcx 0x7ff96f752000 140709293531136\n"\
|
|
Packit Service |
779887 |
"rdx 0x3245fb9a40 215922481728\n"\
|
|
Packit Service |
779887 |
"rsi 0x7ff96f752000 140709293531136\n"\
|
|
Packit Service |
779887 |
"rdi 0x1 1\n"\
|
|
Packit Service |
779887 |
"rbp 0x400a30 0x400a30 <__libc_csu_init>\n"\
|
|
Packit Service |
779887 |
"rsp 0x7fff4fc8a050 0x7fff4fc8a050\n"\
|
|
Packit Service |
779887 |
"r8 0xffffffff 4294967295\n"\
|
|
Packit Service |
779887 |
"r9 0x0 0\n"\
|
|
Packit Service |
779887 |
"r10 0x22 34\n"\
|
|
Packit Service |
779887 |
"r11 0x246 582\n"\
|
|
Packit Service |
779887 |
"r12 0x40079f 4196255\n"\
|
|
Packit Service |
779887 |
"r13 0x7fff4fc8a210 140734531936784\n"\
|
|
Packit Service |
779887 |
"r14 0x0 0\n"\
|
|
Packit Service |
779887 |
"r15 0x0 0\n"\
|
|
Packit Service |
779887 |
"rip 0x4008ae 0x4008ae <crash+14>\n"\
|
|
Packit Service |
779887 |
"eflags 0x10246 [ PF ZF IF RF ]\n"\
|
|
Packit Service |
779887 |
"cs 0x33 51\n"\
|
|
Packit Service |
779887 |
"ss 0x2b 43\n"\
|
|
Packit Service |
779887 |
"ds 0x0 0\n"\
|
|
Packit Service |
779887 |
"es 0x0 0\n"\
|
|
Packit Service |
779887 |
"fs 0x0 0\n"\
|
|
Packit Service |
779887 |
"gs 0x0 0\n"\
|
|
Packit Service |
779887 |
"st0 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st1 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st2 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st3 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st4 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st5 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st6 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"st7 0 (raw 0x00000000000000000000)\n"\
|
|
Packit Service |
779887 |
"fctrl 0x37f 895\n"\
|
|
Packit Service |
779887 |
"fstat 0x0 0\n"\
|
|
Packit Service |
779887 |
"ftag 0xffff 65535\n"\
|
|
Packit Service |
779887 |
"fiseg 0x0 0\n"\
|
|
Packit Service |
779887 |
"fioff 0x0 0\n"\
|
|
Packit Service |
779887 |
"foseg 0x0 0\n"\
|
|
Packit Service |
779887 |
"fooff 0x0 0\n"\
|
|
Packit Service |
779887 |
"fop 0x0 0\n"\
|
|
Packit Service |
779887 |
"xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x2f <repeats 16 times>}, v8_int16 = {0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f, 0x2f2f}, v4_int32 = {0x2f2f2f2f, 0x2f2f2f2f, 0x2f2f2f2f, 0x2f2f2f2f}, v2_int64 = {0x2f2f2f2f2f2f2f2f, 0x2f2f2f2f2f2f2f2f}, uint128 = 0x2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f}\n"\
|
|
Packit Service |
779887 |
"xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 13 times>, 0xff, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff00, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0xff00}, v2_int64 = {0x0, 0xff0000000000}, uint128 = 0x0000ff00000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0xff0000, 0x0}, v2_int64 = {0x0, 0xff0000}, uint128 = 0x0000000000ff00000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm8 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm9 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm10 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm11 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm12 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 14 times>, 0xff, 0x0}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff}, v4_int32 = {0x0, 0x0, 0x0, 0xff0000}, v2_int64 = {0x0, 0xff000000000000}, uint128 = 0x00ff0000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm13 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm14 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"xmm15 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x0 <repeats 16 times>}, v8_int16 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int32 = {0x0, 0x0, 0x0, 0x0}, v2_int64 = {0x0, 0x0}, uint128 = 0x00000000000000000000000000000000}\n"\
|
|
Packit Service |
779887 |
"mxcsr 0x1f80 [ IM DM ZM OM UM PM ]\n"\
|
|
Packit Service |
779887 |
"Dump of assembler code for function crash:\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a0 <+0>: push %rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a1 <+1>: mov %rdi,%rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a4 <+4>: mov $0x400ac0,%edi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008a9 <+9>: callq 0x4006f0 <puts@plt>\n"\
|
|
Packit Service |
779887 |
" => 0x00000000004008ae <+14>: mov (%rbx),%edx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008b0 <+16>: mov $0x400acf,%esi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008b5 <+21>: mov $0x1,%edi\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008ba <+26>: xor %eax,%eax\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008bc <+28>: callq 0x400740 <__printf_chk@plt>\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008c1 <+33>: pop %rbx\n"\
|
|
Packit Service |
779887 |
" 0x00000000004008c2 <+34>: retq\n"\
|
|
Packit Service |
779887 |
"End of assembler dump.\n"
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
#define CORE_BACKTRACE_CONTENT \
|
|
Packit Service |
779887 |
"{ \"signal\": 11\n"\
|
|
Packit Service |
779887 |
", \"only_crash_thread\": true\n"\
|
|
Packit Service |
779887 |
", \"stacktrace\":\n"\
|
|
Packit Service |
779887 |
" [ { \"crash_thread\": true\n"\
|
|
Packit Service |
779887 |
" , \"frames\":\n"\
|
|
Packit Service |
779887 |
" [ { \"address\": 93894060571040\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2464\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"crash\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571239\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2663\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"varargs\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571294\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2718\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"f\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571337\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2761\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"callback\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 140458064176825\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"61ee70f1ceca4897eadb680f1afaa669782c53cf\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 1721\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"call_me_back\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/lib64/libwillcrash.so.0.0.0\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571382\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2806\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"recursive\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571360\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2784\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"recursive\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060571360\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2784\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"recursive\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" }\n"\
|
|
Packit Service |
779887 |
" , { \"address\": 93894060570663\n"\
|
|
Packit Service |
779887 |
" , \"build_id\": \"a4711308c3fe2f0699ea740b0fc13370629f52f2\"\n"\
|
|
Packit Service |
779887 |
" , \"build_id_offset\": 2087\n"\
|
|
Packit Service |
779887 |
" , \"function_name\": \"main\"\n"\
|
|
Packit Service |
779887 |
" , \"file_name\": \"/usr/bin/will_segfault\"\n"\
|
|
Packit Service |
779887 |
" } ]\n"\
|
|
Packit Service |
779887 |
" } ]\n"\
|
|
Packit Service |
779887 |
"}\n"
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
typedef struct backtrace_result {
|
|
Packit Service |
779887 |
const char *format;
|
|
Packit Service |
779887 |
const char *result;
|
|
Packit Service |
779887 |
int max_text_size;
|
|
Packit Service |
779887 |
int max_frames;
|
|
Packit Service |
779887 |
} backtrace_result_t;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
void check(problem_data_t *data, backtrace_result_t br)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
assert(!problem_formatter_load_string(pf, br.format));
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
problem_report_settings_t report_settings = problem_formatter_get_settings(pf);
|
|
Packit Service |
779887 |
if (br.max_frames >= 0)
|
|
Packit Service |
779887 |
report_settings.prs_shortbt_max_frames = br.max_frames;
|
|
Packit Service |
779887 |
if (br.max_text_size >= 0)
|
|
Packit Service |
779887 |
report_settings.prs_shortbt_max_text_size = br.max_text_size; /* always short bt */
|
|
Packit Service |
779887 |
problem_formatter_set_settings(pf, report_settings);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(!problem_formatter_generate_report(pf, data, &pr);;
|
|
Packit Service |
779887 |
assert(pr != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *summary = problem_report_get_description(pr);
|
|
Packit Service |
779887 |
assert(summary != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (br.result != NULL) {
|
|
Packit Service |
779887 |
fprintf(stderr, "####\n");
|
|
Packit Service |
779887 |
fprintf(stderr, "# max_text_size %d, max_frames %d\n", br.max_text_size, br.max_frames);
|
|
Packit Service |
779887 |
fprintf(stderr, "expected: '%s'\n", br.result);
|
|
Packit Service |
779887 |
fprintf(stderr, "====\n");
|
|
Packit Service |
779887 |
fprintf(stderr, "result : '%s'\n", summary);
|
|
Packit Service |
779887 |
fprintf(stderr, "####\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(strcmp(br.result, summary) == 0);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "analyzer", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "type", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "comment", "Hello, world!");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uuid", "123456789ABCDEF");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uid", "69");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "user_name", "abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "root", "/var/run/mock/abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "description", "I run will_segfault and\nit crashed as expected\n");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "core_backtrace", CORE_BACKTRACE_CONTENT);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
backtrace_result_t core_backtrace_result[] = {
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"#1 crash in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#2 varargs in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#3 f in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#4 callback in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#5 call_me_back in /usr/lib64/libwillcrash.so.0.0.0\n"
|
|
Packit Service |
779887 |
"#6 recursive in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#7 main in /usr/bin/will_segfault\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = -1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"#1 crash in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#2 varargs in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#3 f in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#4 callback in /usr/bin/will_segfault\n"
|
|
Packit Service |
779887 |
"#5 call_me_back in /usr/lib64/libwillcrash.so.0.0.0\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = 5
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"#1 crash in /usr/bin/will_segfault\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"#1 crash in /usr/bin/will_segfault\n",
|
|
Packit Service |
779887 |
.max_text_size = 0,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
/* core_backtrase is always truncated */
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"#1 crash in /usr/bin/will_segfault\n",
|
|
Packit Service |
779887 |
.max_text_size = strlen(CORE_BACKTRACE_CONTENT) + 1,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
/* if only core_backtrace exist, use it */
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(core_backtrace_result)/sizeof(*core_backtrace_result); ++i) {
|
|
Packit Service |
779887 |
check(data, core_backtrace_result[i]);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
/* use backtrace, if core_backtrace and backtrace exist */
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "backtrace", BACKTRACE_CONTENT);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
backtrace_result_t backtrace_result[] = {
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"Thread no. 0 (7 frames)\n"
|
|
Packit Service |
779887 |
" #1 crash at will_segfault.c:19\n"
|
|
Packit Service |
779887 |
" #2 varargs at will_segfault.c:31\n"
|
|
Packit Service |
779887 |
" #3 inlined at will_segfault.c:40\n"
|
|
Packit Service |
779887 |
" #4 f at will_segfault.c:45\n"
|
|
Packit Service |
779887 |
" #5 callback at will_segfault.c:50\n"
|
|
Packit Service |
779887 |
" #6 call_me_back at libwillcrash.c:8\n"
|
|
Packit Service |
779887 |
" #7 recursive at will_segfault.c:59\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = -1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"Thread no. 0 (5 frames)\n"
|
|
Packit Service |
779887 |
" #1 crash at will_segfault.c:19\n"
|
|
Packit Service |
779887 |
" #2 varargs at will_segfault.c:31\n"
|
|
Packit Service |
779887 |
" #3 inlined at will_segfault.c:40\n"
|
|
Packit Service |
779887 |
" #4 f at will_segfault.c:45\n"
|
|
Packit Service |
779887 |
" #5 callback at will_segfault.c:50\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = 5
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"Thread no. 0 (1 frames)\n"
|
|
Packit Service |
779887 |
" #1 crash at will_segfault.c:19\n",
|
|
Packit Service |
779887 |
.max_text_size = -1,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"
|
|
Packit Service |
779887 |
"Thread no. 0 (1 frames)\n"
|
|
Packit Service |
779887 |
" #1 crash at will_segfault.c:19\n",
|
|
Packit Service |
779887 |
.max_text_size = 0,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "Truncated backtrace:: %bare_%short_backtrace",
|
|
Packit Service |
779887 |
.result = "Truncated backtrace:\n"BACKTRACE_CONTENT,
|
|
Packit Service |
779887 |
.max_text_size = strlen(BACKTRACE_CONTENT) + 1,
|
|
Packit Service |
779887 |
.max_frames = 1
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(backtrace_result)/sizeof(*backtrace_result); ++i) {
|
|
Packit Service |
779887 |
check(data, backtrace_result[i]);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
## ------ ##
|
|
Packit Service |
779887 |
## attach ##
|
|
Packit Service |
779887 |
## ------ ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([attach],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *fst[] = { "backtrace", "screenshot", "description", NULL };
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
struct test_case {
|
|
Packit Service |
779887 |
const char *format;
|
|
Packit Service |
779887 |
const char *const *files;
|
|
Packit Service |
779887 |
} cases [] = {
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
.format = "%attach:: %multiline,%binary,-coredump",
|
|
Packit Service |
779887 |
.files = fst,
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "analyzer", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "type", "CCpp");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "comment", "Hello, world!");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uuid", "123456789ABCDEF");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uid", "69");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "user_name", "abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "root", "/var/run/mock/abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "description", "I run will_segfault and\nit crashed as expected\n");
|
|
Packit Service |
779887 |
problem_data_add_file(data, "coredump", "/what/ever/path/to/coredump");
|
|
Packit Service |
779887 |
problem_data_add_file(data, "screenshot", "/what/ever/path/to/screenshot");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "backtrace",
|
|
Packit Service |
779887 |
"Thread 1 (LWP 11865):\n"\
|
|
Packit Service |
779887 |
"#0 printf (__fmt=0x400acf \"Result: %d\\n\") at /usr/include/bits/stdio2.h:104\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#1 crash (p=p@entry=0x0) at will_segfault.c:19\n"\
|
|
Packit Service |
779887 |
"i = <error reading variable i (Cannot access memory at address 0x0)>\n"\
|
|
Packit Service |
779887 |
"#2 0x0000000000400964 in varargs (num_args=1, num_args@entry=2) at will_segfault.c:31\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"ap = {{gp_offset = 24, fp_offset = 32767, overflow_arg_area = 0x7fff4fc8a0c0, reg_save_area = 0x7fff4fc8a080}}\n"\
|
|
Packit Service |
779887 |
"#3 0x00000000004009be in inlined (p=0x0) at will_segfault.c:40\n"\
|
|
Packit Service |
779887 |
"num = 42\n"\
|
|
Packit Service |
779887 |
"#4 f (p=p@entry=0x0) at will_segfault.c:45\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#5 0x00000000004009e9 in callback (data=data@entry=0x0) at will_segfault.c:50\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#6 0x00000032f76006f9 in call_me_back (cb=cb@entry=0x4009e0 <callback>, data=data@entry=0x0) at libwillcrash.c:8\n"\
|
|
Packit Service |
779887 |
"res = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#7 0x0000000000400a14 in recursive (i=i@entry=0) at will_segfault.c:59\n"\
|
|
Packit Service |
779887 |
"p = <optimized out>\n"\
|
|
Packit Service |
779887 |
"#8 0x0000000000400a00 in recursive (i=i@entry=1) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#9 0x0000000000400a00 in recursive (i=i@entry=2) at will_segfault.c:66\n"\
|
|
Packit Service |
779887 |
"No locals.\n"\
|
|
Packit Service |
779887 |
"#10 0x0000000000400775 in main (argc=<optimized out>, argv=<optimized out>) at will_segfault.c:83\n"\
|
|
Packit Service |
779887 |
"No locals.\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(cases)/sizeof(*cases); ++i) {
|
|
Packit Service |
779887 |
fprintf(stderr, "%s", cases[i].format);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
assert(!problem_formatter_load_string(pf, cases[i].format));
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
assert(!problem_formatter_generate_report(pf, data, &pr);;
|
|
Packit Service |
779887 |
assert(pr != NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *const *iter = cases[i].files;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (*iter != NULL) {
|
|
Packit Service |
779887 |
assert(problem_report_get_attachments(pr));
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
GList *clone = g_list_copy_deep(problem_report_get_attachments(pr), (GCopyFunc)xstrdup, NULL);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
while (*iter) {
|
|
Packit Service |
779887 |
GList *item = g_list_find_custom(clone, *iter, (GCompareFunc)strcmp);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (item == NULL) {
|
|
Packit Service |
779887 |
fprintf(stderr, "format: '%s'\n", cases[i].format);
|
|
Packit Service |
779887 |
fprintf(stderr, "missing file: '%s'\n", *iter);
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
else {
|
|
Packit Service |
779887 |
free(item->data);
|
|
Packit Service |
779887 |
clone = g_list_delete_link(clone, item);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
++iter;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (clone != NULL) {
|
|
Packit Service |
779887 |
for (GList *iter = clone; iter; iter = g_list_next(iter)) {
|
|
Packit Service |
779887 |
fprintf(stderr, "extra : '%s'\n", (const char *)iter->data);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## -------------- ##
|
|
Packit Service |
779887 |
## custom_section ##
|
|
Packit Service |
779887 |
## -------------- ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([custom_section],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
struct test_case;
|
|
Packit Service |
779887 |
struct test_case {
|
|
Packit Service |
779887 |
const char *section_name;
|
|
Packit Service |
779887 |
int section_flags;
|
|
Packit Service |
779887 |
int retval_load;
|
|
Packit Service |
779887 |
int retval_generate;
|
|
Packit Service |
779887 |
const char *format;
|
|
Packit Service |
779887 |
const char *output;
|
|
Packit Service |
779887 |
} cases [] = {
|
|
Packit Service |
779887 |
{ .section_name = NULL,
|
|
Packit Service |
779887 |
.section_flags = 0,
|
|
Packit Service |
779887 |
.retval_load = 1,
|
|
Packit Service |
779887 |
.retval_generate = 0,
|
|
Packit Service |
779887 |
.format =
|
|
Packit Service |
779887 |
"%additional_info::\n"
|
|
Packit Service |
779887 |
":: package,\\\n"
|
|
Packit Service |
779887 |
"uuid,cwd\\\\"
|
|
Packit Service |
779887 |
",user_name"
|
|
Packit Service |
779887 |
,
|
|
Packit Service |
779887 |
.output = NULL,
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{ .section_name = "additional_info",
|
|
Packit Service |
779887 |
.section_flags = 0,
|
|
Packit Service |
779887 |
.retval_load = 0,
|
|
Packit Service |
779887 |
.retval_generate = 0,
|
|
Packit Service |
779887 |
.format =
|
|
Packit Service |
779887 |
"%additional_info::\n"
|
|
Packit Service |
779887 |
":: package,\\\n"
|
|
Packit Service |
779887 |
"uuid,cwd\\\\"
|
|
Packit Service |
779887 |
",user_name"
|
|
Packit Service |
779887 |
,
|
|
Packit Service |
779887 |
.output =
|
|
Packit Service |
779887 |
"package: libreport\n"
|
|
Packit Service |
779887 |
"uuid: 0123456789ABCDEF\n"
|
|
Packit Service |
779887 |
"user_name: abrt\n"
|
|
Packit Service |
779887 |
,
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{ .section_name = "additional_info",
|
|
Packit Service |
779887 |
.section_flags = PFFF_REQUIRED,
|
|
Packit Service |
779887 |
.retval_load = 1,
|
|
Packit Service |
779887 |
.retval_generate = 0,
|
|
Packit Service |
779887 |
.format = "%summary:: [abrt] %package%\n:: %reporter\n",
|
|
Packit Service |
779887 |
.output = NULL,
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{ .section_name = "additional_info",
|
|
Packit Service |
779887 |
.section_flags = 0,
|
|
Packit Service |
779887 |
.retval_load = 0,
|
|
Packit Service |
779887 |
.retval_generate = 0,
|
|
Packit Service |
779887 |
.format = "%summary:: [abrt] %package%\n:: %reporter\n",
|
|
Packit Service |
779887 |
.output = "",
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
{ .section_name = "additional_info",
|
|
Packit Service |
779887 |
.section_flags = 0,
|
|
Packit Service |
779887 |
.retval_load = 0,
|
|
Packit Service |
779887 |
.retval_generate = 0,
|
|
Packit Service |
779887 |
.format =
|
|
Packit Service |
779887 |
"%additional_info:: root\n"
|
|
Packit Service |
779887 |
"Info:: package,\\\n"
|
|
Packit Service |
779887 |
"uuid,cwd\\\\"
|
|
Packit Service |
779887 |
",user_name"
|
|
Packit Service |
779887 |
,
|
|
Packit Service |
779887 |
.output =
|
|
Packit Service |
779887 |
"Info:\n"
|
|
Packit Service |
779887 |
"package: libreport\n"
|
|
Packit Service |
779887 |
"uuid: 0123456789ABCDEF\n"
|
|
Packit Service |
779887 |
"user_name: abrt\n"
|
|
Packit Service |
779887 |
,
|
|
Packit Service |
779887 |
},
|
|
Packit Service |
779887 |
};
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "crash_function", "run_event");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "reason", "Killed by SIGSEGV");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "uuid", "0123456789ABCDEF");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "user_name", "abrt");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
for (size_t i = 0; i < sizeof(cases)/sizeof(*cases); ++i) {
|
|
Packit Service |
779887 |
fprintf(stderr, "#### Test case %zd ####\n", i + 1);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
struct test_case *tcase = cases + i;
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (tcase->section_name != NULL) {
|
|
Packit Service |
779887 |
problem_formatter_add_section(pf, tcase->section_name, tcase->section_flags);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int r = problem_formatter_load_string(pf, tcase->format);
|
|
Packit Service |
779887 |
if (r != tcase->retval_load) {
|
|
Packit Service |
779887 |
fprintf(stderr, "Load : expected : %d , got : %d\n", tcase->retval_load, r);
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (tcase->retval_load != 0) {
|
|
Packit Service |
779887 |
goto next_test_case;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
r = problem_formatter_generate_report(pf, data, &pr);
|
|
Packit Service |
779887 |
if (r != tcase->retval_generate) {
|
|
Packit Service |
779887 |
fprintf(stderr, "Generaet : expected : %d , got : %d\n", tcase->retval_generate, r);
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (tcase->retval_generate != 0) {
|
|
Packit Service |
779887 |
goto next_test_case;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
const char *output = problem_report_get_section(pr, tcase->section_name);
|
|
Packit Service |
779887 |
assert(output);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
if (strcmp(output, tcase->output) != 0) {
|
|
Packit Service |
779887 |
fprintf(stderr, "expected:\n'%s'\n", tcase->output);
|
|
Packit Service |
779887 |
fprintf(stderr, "result :\n'%s'\n", output);
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
next_test_case:
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
fprintf(stderr, "#### Finished - Test case %zd ####\n", i + 1);
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
## ------ ##
|
|
Packit Service |
779887 |
## sanity ##
|
|
Packit Service |
779887 |
## ------ ##
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
AT_TESTFUN([sanity],
|
|
Packit Service |
779887 |
[[
|
|
Packit Service |
779887 |
#include "problem_report.h"
|
|
Packit Service |
779887 |
#include "internal_libreport.h"
|
|
Packit Service |
779887 |
#include <errno.h>
|
|
Packit Service |
779887 |
#include <assert.h>
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
void assert_equal_strings(const char *res, const char *exp)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
if ( (res == NULL && exp != NULL)
|
|
Packit Service |
779887 |
|| (res != NULL && exp == NULL)
|
|
Packit Service |
779887 |
|| ((res != NULL && exp != NULL) && strcmp(res, exp) != 0)
|
|
Packit Service |
779887 |
) {
|
|
Packit Service |
779887 |
fprintf(stderr, "expected : '%s'\n", exp);
|
|
Packit Service |
779887 |
fprintf(stderr, "result : '%s'\n", res);
|
|
Packit Service |
779887 |
abort();
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
int main(int argc, char **argv)
|
|
Packit Service |
779887 |
{
|
|
Packit Service |
779887 |
g_verbose = 3;
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_formatter_t *pf = problem_formatter_new();
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(problem_formatter_add_section(pf, "summary", 0) == -EEXIST);
|
|
Packit Service |
779887 |
assert(problem_formatter_add_section(pf, "description", 0) == -EEXIST);
|
|
Packit Service |
779887 |
assert(problem_formatter_add_section(pf, "attach", 0) == -EEXIST);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert(problem_formatter_add_section(pf, "additional_info", 0) == 0);
|
|
Packit Service |
779887 |
assert(problem_formatter_add_section(pf, "additional_info", 0) == -EEXIST);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_data_t *data = problem_data_new();
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "package", "libreport");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "crash_function", "run_event");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "reason", "Killed by SIGSEGV");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "comment", "Hello, world!");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "root", "/var/run/mock/abrt");
|
|
Packit Service |
779887 |
problem_data_add_text_noteditable(data, "user_name", "abrt");
|
|
Packit Service |
779887 |
problem_data_add_file(data, "screenshot", "/what/ever/path/to/screenshot");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_formatter_load_string(pf,
|
|
Packit Service |
779887 |
"%summary:: [abrt] %package% : %reason%\n\n"
|
|
Packit Service |
779887 |
"Description:: %bare_comment\n\n"
|
|
Packit Service |
779887 |
"%attach:: screenshot\n\n"
|
|
Packit Service |
779887 |
"%additional_info::\n\n"
|
|
Packit Service |
779887 |
"User:: root,user_name,uid\n\n\n"
|
|
Packit Service |
779887 |
);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_t *pr = NULL;
|
|
Packit Service |
779887 |
problem_formatter_generate_report(pf, data, &pr);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_summary(pr),
|
|
Packit Service |
779887 |
"[abrt] libreport : Killed by SIGSEGV");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_buffer_printf(problem_report_get_buffer(pr, PR_SEC_SUMMARY), " - test");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_summary(pr),
|
|
Packit Service |
779887 |
"[abrt] libreport : Killed by SIGSEGV - test");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_description(pr),
|
|
Packit Service |
779887 |
"Description:\nHello, world!\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_buffer_printf(problem_report_get_buffer(pr, PR_SEC_DESCRIPTION), "Test line\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_description(pr),
|
|
Packit Service |
779887 |
"Description:\nHello, world!\nTest line\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_section(pr, "additional_info"),
|
|
Packit Service |
779887 |
"User:\n"
|
|
Packit Service |
779887 |
"root: /var/run/mock/abrt\n"
|
|
Packit Service |
779887 |
"user_name: abrt\n"
|
|
Packit Service |
779887 |
);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_buffer_printf(problem_report_get_buffer(pr, "additional_info"), "uid: 42\n");
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
assert_equal_strings(problem_report_get_section(pr, "additional_info"),
|
|
Packit Service |
779887 |
"User:\n"
|
|
Packit Service |
779887 |
"root: /var/run/mock/abrt\n"
|
|
Packit Service |
779887 |
"user_name: abrt\n"
|
|
Packit Service |
779887 |
"uid: 42\n"
|
|
Packit Service |
779887 |
);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
problem_report_free(pr);
|
|
Packit Service |
779887 |
problem_data_free(data);
|
|
Packit Service |
779887 |
problem_formatter_free(pf);
|
|
Packit Service |
779887 |
|
|
Packit Service |
779887 |
return 0;
|
|
Packit Service |
779887 |
}
|
|
Packit Service |
779887 |
]])
|