From fd504030dfc5085f4509d3d078f6150c38a4aea9 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Thu, 26 Feb 2026 10:22:49 +0300 Subject: [PATCH] parser: fix parse_file() permanently breaks spawn + os.execute() on macOS (fixes #26633) --- 01KJCD8AK12TTD3M34DXMKS2Q9 | Bin 0 -> 150728 bytes ...parse_file_spawn_execute_regression_test.v | 32 +++++++++++++++++ vlib/v/util/timers.v | 33 ++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100755 01KJCD8AK12TTD3M34DXMKS2Q9 create mode 100644 vlib/v/parser/parse_file_spawn_execute_regression_test.v diff --git a/01KJCD8AK12TTD3M34DXMKS2Q9 b/01KJCD8AK12TTD3M34DXMKS2Q9 new file mode 100755 index 0000000000000000000000000000000000000000..5ccb42b9fa378051c6a2a3cbf9096a0d12b8acf3 GIT binary patch literal 150728 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 bOYS-Q;WhimzVhnE)!P=<|N8bd=c)e#?}d>r literal 0 HcmV?d00001 diff --git a/vlib/v/parser/parse_file_spawn_execute_regression_test.v b/vlib/v/parser/parse_file_spawn_execute_regression_test.v new file mode 100644 index 000000000..c94510404 --- /dev/null +++ b/vlib/v/parser/parse_file_spawn_execute_regression_test.v @@ -0,0 +1,32 @@ +import os +import time +import v.ast +import v.parser +import v.pref +import v.util + +fn run_true_exit_code() int { + return os.execute('true').exit_code +} + +fn spawn_execute_elapsed_ms() (i64, int) { + sw := time.new_stopwatch() + t := spawn run_true_exit_code() + exit_code := t.wait() + return sw.elapsed().milliseconds(), exit_code +} + +fn test_parse_file_does_not_poison_spawn_execute_on_macos() { + $if !macos { + return + } + util.timing_set_should_print(false) + before_ms, before_exit_code := spawn_execute_elapsed_ms() + assert before_exit_code == 0 + mut table := ast.new_table() + prefs := pref.new_preferences() + _ := parser.parse_file(@FILE, mut table, .skip_comments, prefs) + after_ms, after_exit_code := spawn_execute_elapsed_ms() + assert after_exit_code == 0 + assert after_ms < 5000, 'spawn + os.execute slowed down from ${before_ms}ms to ${after_ms}ms' +} diff --git a/vlib/v/util/timers.v b/vlib/v/util/timers.v index fbc076f8d..1b10ae72d 100644 --- a/vlib/v/util/timers.v +++ b/vlib/v/util/timers.v @@ -42,15 +42,24 @@ pub fn get_timers() &Timers { } pub fn timing_start(label string) { + if !g_timers.should_print { + return + } mut t := get_timers() t.start(label) } pub fn timing_measure(label string) { + if !g_timers.should_print { + return + } g_timers.show(label) } pub fn timing_measure_cumulative(label string) { + if !g_timers.should_print { + return + } g_timers.measure_cumulative(label) } @@ -59,12 +68,18 @@ pub fn timing_set_should_print(should_print bool) { } pub fn (mut t Timers) start(name string) { + if !t.should_print { + return + } mut sw := t.tsafe_get_sw(name) or { time.new_stopwatch() } sw.start() t.tsafe_set_sw(name, sw) } pub fn (mut t Timers) measure(name string) i64 { + if !t.should_print { + return 0 + } mut sw := t.tsafe_get_sw(name) or { timer_keys := t.tsafe_get_keys() eprintln('> Timer `${name}` was NOT started.') @@ -79,6 +94,9 @@ pub fn (mut t Timers) measure(name string) i64 { } pub fn (mut t Timers) measure_cumulative(name string) i64 { + if !t.should_print { + return 0 + } ms := t.measure(name) mut sw := t.tsafe_get_sw(name) or { return ms } sw.pause() @@ -87,12 +105,18 @@ pub fn (mut t Timers) measure_cumulative(name string) i64 { } pub fn (mut t Timers) measure_pause(name string) { + if !t.should_print { + return + } mut sw := t.tsafe_get_sw(name) or { return } sw.pause() t.tsafe_set_sw(name, sw) } pub fn (mut t Timers) measure_resume(name string) { + if !t.should_print { + return + } mut sw := t.tsafe_get_sw(name) or { return } sw.start() t.tsafe_set_sw(name, sw) @@ -119,12 +143,18 @@ pub fn (mut t Timers) show(label string) { } pub fn (mut t Timers) show_if_exists(label string) { + if !t.should_print { + return + } t.tsafe_get_sw(label) or { return } t.show(label) t.already_shown << label } pub fn (mut t Timers) show_remaining() { + if !t.should_print { + return + } keys := t.tsafe_get_keys() for k in keys { if k in t.already_shown { @@ -135,6 +165,9 @@ pub fn (mut t Timers) show_remaining() { } pub fn (mut t Timers) dump_all() { + if !t.should_print { + return + } keys := t.tsafe_get_keys() for k in keys { elapsed := t.message(k) -- 2.39.5