kicad-cli jobset run causes segmentation fault
Description
Running a jobset via kicad-cli causes a segmentation fault. Running the same jobset from the GUI finishes successfully.
GDB output:
(gdb) run
Starting program: /usr/bin/kicad-cli jobset run --stop-on-error --file common.kicad_jobset coulomb_counter.kicad_pro
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffeebff6c0 (LWP 14942)]
[New Thread 0x7fffedbfe6c0 (LWP 14943)]
[New Thread 0x7fffecbfd6c0 (LWP 14944)]
[New Thread 0x7fffebbfc6c0 (LWP 14945)]
[New Thread 0x7fffeabfb6c0 (LWP 14946)]
[New Thread 0x7fffe9bfa6c0 (LWP 14947)]
|--------------------------------
| Running jobs for destination d289a4c3-15ec-4e02-92f4-a3700d8878f8
|--------------------------------
|No. | Description
|1 | Export Gerbers
|2 | Export drill data
|--------------------------------
|--------------------------------
| Running job 1: Export Gerbers
|--------------------------------
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-F_Cu.gtl'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-B_Cu.gbl'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-F_Paste.gtp'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-B_Paste.gbp'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-F_Silkscreen.gto'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-B_Silkscreen.gbo'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-F_Mask.gts'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-B_Mask.gbs'.
Plotted to '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter-Edge_Cuts.gm1'.
Job successful
|--------------------------------
| Running job 2: Export drill data
|--------------------------------
Created file '/tmp/75a99f47-6c2c-47e4-9822-52480c5dd6a5/coulomb_counter.drl'
Done.
Job successful
Thread 1 "kicad-cli" received signal SIGSEGV, Segmentation fault.
0x00007ffff6ad4ec0 in operator() (__closure=<optimized out>, token=0x7fffffffb8e0) at /usr/src/debug/kicad/kicad/common/common.cpp:66
66 return aProject->TextVarResolver( token );
(gdb) bt
#0 0x00007ffff6ad4ec0 in operator() (__closure=<optimized out>, token=0x7fffffffb8e0) at /usr/src/debug/kicad/kicad/common/common.cpp:66
#1 std::__invoke_impl<bool, ExpandTextVars(const wxString&, const PROJECT*, int)::<lambda(wxString*)>&, wxString*> (__f=...) at /usr/include/c++/16.1.1/bits/invoke.h:63
#2 std::__invoke_r<bool, ExpandTextVars(const wxString&, const PROJECT*, int)::<lambda(wxString*)>&, wxString*> (__fn=...) at /usr/include/c++/16.1.1/bits/invoke.h:116
#3 std::_Function_handler<bool(wxString*), ExpandTextVars(const wxString&, const PROJECT*, int)::<lambda(wxString*)> >::_M_invoke(const std::_Any_data &, wxString *&&) (__functor=..., __args#0=<optimized out>)
at /usr/include/c++/16.1.1/bits/std_function.h:295
#4 0x00007ffff6add163 in std::function<bool(wxString*)>::operator() (this=0x7fffffffba70, __args#0=<optimized out>) at /usr/include/c++/16.1.1/bits/std_function.h:581
#5 ExpandTextVars (aSource=..., aResolver=aResolver@entry=0x7fffffffba70, aFlags=0, aDepth=aDepth@entry=0) at /usr/src/debug/kicad/kicad/common/common.cpp:278
#6 0x00007ffff6add96c in ExpandTextVars (aSource=..., aProject=<optimized out>, aFlags=<optimized out>) at /usr/src/debug/kicad/kicad/common/common.cpp:69
#7 0x00007ffff67ff9c6 in JOBS_OUTPUT_ARCHIVE::HandleOutputs (this=0x555556173020, baseTempPath=..., aProject=0x555555e019d0, aPathsWithOverwriteDisallowed=..., aOutputsToHandle=...,
aResolvedOutputPath=std::optional [no contained value]) at /usr/src/debug/kicad/kicad/common/jobs/jobs_output_archive.cpp:55
#8 0x0000555555603f55 in JOBS_RUNNER::RunJobsForDestination (this=0x7fffffffc270, aDestination=0x555555bbe470, aBail=true) at /usr/src/debug/kicad/kicad/kicad/jobs_runner.cpp:335
#9 0x00005555555cf4a2 in JOBS_RUNNER::RunJobsAllDestinations (this=0x7fffffffc270, aBail=true) at /usr/src/debug/kicad/kicad/kicad/jobs_runner.cpp:54
#10 CLI::JOBSET_RUN_COMMAND::doPerform (this=<optimized out>, aKiway=...) at /usr/src/debug/kicad/kicad/kicad/cli/command_jobset_run.cpp:96
#11 0x00005555555c95ce in CLI::COMMAND::Perform (aKiway=..., this=0x55555562a4a0 <_ZL12jobsetRunCmd.lto_priv.0>) at /usr/src/debug/kicad/kicad/kicad/cli/command.cpp:119
#12 PGM_KICAD::OnPgmRun (this=<optimized out>) at /usr/src/debug/kicad/kicad/kicad/kicad_cli.cpp:537
#13 0x00005555555cab40 in APP_KICAD_CLI::OnRun (this=<optimized out>) at /usr/src/debug/kicad/kicad/kicad/kicad_cli.cpp:657
#14 0x00007ffff72ec261 in wxEntry (argc=@0x7ffff74425a4: 7, argv=<optimized out>) at /usr/src/debug/wxwidgets/wxWidgets/src/common/init.cpp:497
#15 0x00007ffff72ec324 in wxEntry (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/wxwidgets/wxWidgets/src/common/init.cpp:509
#16 0x000055555557e7df in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kicad/kicad/kicad/kicad_cli.cpp:715Steps to reproduce
- Extract the archive
- Run
kicad-cli jobset run --stop-on-error --file common.kicad_jobset coulomb_counter.kicad_pro
KiCad Version
Application: KiCad PCB Editor x86_64 on x86_64
Version: 10.0.3, release build
Libraries:
wxWidgets 3.2.10 EGL
FreeType 2.14.3
HarfBuzz 14.2.0
FontConfig 2.17.1
libcurl/8.20.0 OpenSSL/3.6.2 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.69.0 ngtcp2/1.22.1 nghttp3/1.15.0 mit-krb5/1.21.3
Platform: Arch Linux, 64 bit, Little endian, wxGTK, X11, x11, GNOME,
OpenGL: Intel, Mesa Intel(R) UHD Graphics 630 (CFL GT2), 4.6 (Compatibility Profile) Mesa 26.0.6-arch1.1, EGL
Build Info:
Date: May 15 2026 09:04:10
wxWidgets: 3.2.10 (wchar_t,wx containers) GTK+ 3.24
Boost: 1.91.0
OCC: 7.9.3
Curl: 8.20.0
ngspice: 46
Compiler: GCC 16.1.1 with C++ ABI 1021
KICAD_IPC_API=ON
KICAD_USE_PCH=OFF
Locale:
Lang: en_GB
Enc: UTF-8
Num: 1,234.5
Encoded кΩ丈: D0BACEA9E4B888 (sys), D0BACEA9E4B888 (utf8)Edited by Michal Procházka