mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 16:48:27 -05:00
f22bfe86b6
This change fixes failing `integration/logging.tcl` test in Gentoo with musl libc, where `ldd` returns ``` libc.so => /lib/ld-musl-x86_64.so.1 (0x7f9d5f171000) ``` unlike Alpine's ``` libc.musl-x86_64.so.1 => /lib/ld-musl-x86_64.so.1 (0x7f82cfa16000) ``` The solution is to extend matching pattern introduced in #8532.
59 lines
1.8 KiB
Tcl
59 lines
1.8 KiB
Tcl
tags {"external:skip"} {
|
|
|
|
set system_name [string tolower [exec uname -s]]
|
|
set backtrace_supported 0
|
|
|
|
# We only support darwin or Linux with glibc
|
|
if {$system_name eq {darwin}} {
|
|
set backtrace_supported 1
|
|
} elseif {$system_name eq {linux}} {
|
|
# Avoid the test on libmusl, which does not support backtrace
|
|
set ldd [exec ldd src/redis-server]
|
|
if {![string match {*libc.*musl*} $ldd]} {
|
|
set backtrace_supported 1
|
|
}
|
|
}
|
|
|
|
if {$backtrace_supported} {
|
|
set server_path [tmpdir server.log]
|
|
start_server [list overrides [list dir $server_path]] {
|
|
test "Server is able to generate a stack trace on selected systems" {
|
|
r config set watchdog-period 200
|
|
r debug sleep 1
|
|
set pattern "*debugCommand*"
|
|
set res [wait_for_log_messages 0 \"$pattern\" 0 100 100]
|
|
if {$::verbose} { puts $res }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Valgrind will complain that the process terminated by a signal, skip it.
|
|
if {!$::valgrind} {
|
|
if {$backtrace_supported} {
|
|
set crash_pattern "*STACK TRACE*"
|
|
} else {
|
|
set crash_pattern "*crashed by signal*"
|
|
}
|
|
|
|
set server_path [tmpdir server1.log]
|
|
start_server [list overrides [list dir $server_path]] {
|
|
test "Crash report generated on SIGABRT" {
|
|
set pid [s process_id]
|
|
exec kill -SIGABRT $pid
|
|
set res [wait_for_log_messages 0 \"$crash_pattern\" 0 50 100]
|
|
if {$::verbose} { puts $res }
|
|
}
|
|
}
|
|
|
|
set server_path [tmpdir server2.log]
|
|
start_server [list overrides [list dir $server_path]] {
|
|
test "Crash report generated on DEBUG SEGFAULT" {
|
|
catch {r debug segfault}
|
|
set res [wait_for_log_messages 0 \"$crash_pattern\" 0 50 100]
|
|
if {$::verbose} { puts $res }
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|