diff --git a/tests/support/server.tcl b/tests/support/server.tcl index 1cddb7068..77ba31d84 100644 --- a/tests/support/server.tcl +++ b/tests/support/server.tcl @@ -50,11 +50,17 @@ proc kill_server config { tags {"leaks"} { test "Check for memory leaks (pid $pid)" { set output {0 leaks} - catch {exec leaks $pid} output - if {[string match {*process does not exist*} $output] || - [string match {*cannot examine*} $output]} { - # In a few tests we kill the server process. - set output "0 leaks" + catch {exec leaks $pid} output option + # In a few tests we kill the server process, so leaks will not find it. + # It'll exits with exit code >1 on error, so we ignore these. + if {[dict exists $option -errorcode]} { + set details [dict get $option -errorcode] + if {[lindex $details 0] eq "CHILDSTATUS"} { + set status [lindex $details 2] + if {$status > 1} { + set output "0 leaks" + } + } } set output } {*0 leaks*}