blob: 022daccf72cda2958e5f7a4af7b822ccce9d6819 [file] [log] [blame]
Dmitry V. Levine96cb622015-02-15 15:52:02 +00001#!/bin/sh
2
3# Check -i option.
4
5. "${srcdir=.}/init.sh"
6
Dmitry V. Levin8f546642015-03-17 17:07:57 +00007check_prog sed
Dmitry V. Levine96cb622015-02-15 15:52:02 +00008
Dmitry V. Levin8f546642015-03-17 17:07:57 +00009run_prog > /dev/null
Dmitry V. Levine96cb622015-02-15 15:52:02 +000010
Dmitry V. Levin8f546642015-03-17 17:07:57 +000011args="-if $args"
12$STRACE $args 2> "$LOG" ||
13 dump_log_and_fail_with "$STRACE $args failed"
Dmitry V. Levine96cb622015-02-15 15:52:02 +000014
15len="$(sed -n 's/^\[[[:xdigit:]]\+\] write(-1, NULL, \([[:digit:]]\{1,2\}\))[[:space:]]\+= -1 .*/\1/p' "$LOG")" &&
16[ -n "$len" ] &&
Dmitry V. Levin1c5fead2015-02-23 22:37:40 +000017pid="$(sed -n 's/^\[[[:xdigit:]]\{'"$len"'\}\] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_\(KILLED\|DUMPED\), si_pid=\([[:digit:]]\+\), .*/\2/p' "$LOG")" &&
Dmitry V. Levine96cb622015-02-15 15:52:02 +000018[ -n "$pid" ] &&
19ip="$(sed -n 's/^\[pid \+'"$pid"'\] \[\([[:xdigit:]]\{'"$len"'\}\)] --- SIGSEGV {.*} ---$/\1/p' "$LOG")" &&
20[ -n "$ip" ] &&
21addr="$(echo "$ip" |sed 's/^0\+//')" &&
Dmitry V. Levin8f546642015-03-17 17:07:57 +000022[ -n "$addr" ] ||
23 dump_log_and_fail_with
Dmitry V. Levine96cb622015-02-15 15:52:02 +000024
Dmitry V. Levin8f546642015-03-17 17:07:57 +000025EXPECTED="$LOG.expected"
26cat > "$EXPECTED" << __EOF__
27\\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
28\\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
29\\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
30\\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
31__EOF__
Dmitry V. Levine96cb622015-02-15 15:52:02 +000032
Dmitry V. Levin8f546642015-03-17 17:07:57 +000033match_grep "$LOG" "$EXPECTED"
34rm -f "$EXPECTED"
Dmitry V. Levine96cb622015-02-15 15:52:02 +000035
36exit 0