xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit 46b8a75d304e001f8255c7ef4af5dcda30b6709d

Workaround sanitizers breaking a Lua test
vifmjob_terminate_running failes to terminate a job. It kill parent of
the target process, but the process itself keeps running. On top of
that, while parent ends up being dead no notification about it is
received by Vifm.

This has happened with all three kinds of sanitizers and never happened
without them, so attributing the issue to them.
Author: xaizek
Author date (UTC): 2025-11-16 14:35
Committer name: xaizek
Committer date (UTC): 2025-12-21 10:43
Parent(s): fc03c686156396dd6c674490120f2171e380c0d3
Signing key: 99DC5E4DB05F6BE2
Tree: 1d69a9b765c8cd6e61c737331755bfd9c4c04adb
File Lines added Lines deleted
tests/lua/api_jobs.c 7 1
File tests/lua/api_jobs.c changed (mode: 100644) (index 941b2779b..ae4e1c395)
... ... TEST(vifmjob_terminate_after_finish)
307 307
308 308 TEST(vifmjob_terminate_running) TEST(vifmjob_terminate_running)
309 309 { {
310 GLUA_EQ(vlua, "", "job = vifm.startjob { cmd = 'sleep 10' }");
310 // Building with sanitizers using `gcc (Debian 14.2.0-19) 14.2.0` resulted in
311 // this test failing without `exec` because it apparently kills parent of
312 // `sleep 10` without getting a notification about it (while `sleep 10` keeps
313 // running in background).
314 //
315 // This has never showed up without sanitizers, so assuming its a bug there.
316 GLUA_EQ(vlua, "", "job = vifm.startjob { cmd = 'exec sleep 10' }");
311 317 GLUA_EQ(vlua, "true", "print(job:terminate() == nil)"); GLUA_EQ(vlua, "true", "print(job:terminate() == nil)");
312 318
313 319 time_t t1 = time(NULL); time_t t1 = time(NULL);
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master