[SOLVED] Multiple clang processes hung on linking, no CPU usage

Hi,

I am fairly new clang user and ran into a really weird issue tonight when trying to incorporate {fmt} into my codebase. What I did was add the header-only includes (fmt/core.h, fmt/format-inl.h and fmt/format.h) to my library project. I modified my library to call fmt::println("{}", d) etc. in a few places. I ran a little unit test program which compiled fine, but had assertion failures at runtime - this is expected since it tried to capture the output from println with some incorrect assumptions about what libc function is being used to print the string.

Anyway, I then rebuilt my library and then tried to run my (C#-based) unit tests, which in turn execute clang to compile a whole bunch of generated C++ code, linking with this library:

$ ls -l lib/stdlib/lib/
total 848
-rw-r--r-- 1 per per 865976 aug 30 22:48 libstdlib.a

The incredibly odd thing happened: some files compiled fine, then it just hung. A bunch of processes have been stuck for about 12 minutes now on my machine. No CPU usage. They are just stuck.

per        16869   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/1BC19F662B5A267378395ABC2D3063033B5CA144151A5B6F16A6955DB6618CF4 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/1BC19F662B5A267378395ABC2D3063033B5CA144151A5B6F16A6955DB6618CF4.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16870   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/8FBE650ED26D0F2EF987B0294FFC2EFE81DCB7CD759ACE1E73FC37EF169B8812 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/8FBE650ED26D0F2EF987B0294FFC2EFE81DCB7CD759ACE1E73FC37EF169B8812.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16871   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/72A38A6FCE387EB9E0D3F4472D189131742F561B3798643EDD612DC3AC11C1E5 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/72A38A6FCE387EB9E0D3F4472D189131742F561B3798643EDD612DC3AC11C1E5.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16872   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/951B921F5F7DADFA0358005E6FC2305BF3A25323631339AAC7385A91375EBCED -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/951B921F5F7DADFA0358005E6FC2305BF3A25323631339AAC7385A91375EBCED.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16873   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/F2A30C1D5C56C6184B75D6D2BEDFD17A09E6ECB388A1BF3AFAD4F35BA33EEEB8 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/F2A30C1D5C56C6184B75D6D2BEDFD17A09E6ECB388A1BF3AFAD4F35BA33EEEB8.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16874   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/C5D5EBA02E3121CBA7697E248A77B297A3918DA22BE6400EEE7D47AEAA0D2AAC -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/C5D5EBA02E3121CBA7697E248A77B297A3918DA22BE6400EEE7D47AEAA0D2AAC.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16875   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/83A7CC3BA34486871CE3B67E78BFC0D20AD9C0A70AD2990469D8024F0B4952E3 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/83A7CC3BA34486871CE3B67E78BFC0D20AD9C0A70AD2990469D8024F0B4952E3.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16877   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/F6BCE829930DFB4737493279022769B47C549DF7A59E8FE185DA5C920BE28464 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/F6BCE829930DFB4737493279022769B47C549DF7A59E8FE185DA5C920BE28464.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16878   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/0F16848B06AF1696FDB085D8729807BDB1CC24DD7ED69C2BE83219C89BE84ECA -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/0F16848B06AF1696FDB085D8729807BDB1CC24DD7ED69C2BE83219C89BE84ECA.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16879   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/07850289D114BDE65D3470E63FD6B8DFDDE3D9D6C084181AB1B5CED1173A2D0B -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/07850289D114BDE65D3470E63FD6B8DFDDE3D9D6C084181AB1B5CED1173A2D0B.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16915   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/9A2E66BB41582EA4E9D89B3C6E1938484301C512EC1B3EC3FBE4EBD2BBB58E7E -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/9A2E66BB41582EA4E9D89B3C6E1938484301C512EC1B3EC3FBE4EBD2BBB58E7E.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16916   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/0EB693317599B284BE56C67F0A511FFCEFE106BF77BEC03D265D20043C6E29F7 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/0EB693317599B284BE56C67F0A511FFCEFE106BF77BEC03D265D20043C6E29F7.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16917   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/FCC4240CC45F27A980CB72B06516827D30DEFA9F97BCC7247BF89EF642586AE4 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/FCC4240CC45F27A980CB72B06516827D30DEFA9F97BCC7247BF89EF642586AE4.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16919   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/22037B6CC7AC01C795E247D2E540303DAB50EC367F6A150ED539062305EA6B14 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/22037B6CC7AC01C795E247D2E540303DAB50EC367F6A150ED539062305EA6B14.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16962   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/2BA0CC583C5CF86474B5964F7A9FB65B4CC1AB000393029B091ED3287055DA61 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/2BA0CC583C5CF86474B5964F7A9FB65B4CC1AB000393029B091ED3287055DA61.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16963   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/B91FAA4A4661826563C1098209520A59D66D1309934D8E985DC955DA1EF3C54B -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/B91FAA4A4661826563C1098209520A59D66D1309934D8E985DC955DA1EF3C54B.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16964   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/B2A41C892066E75043C42F6B634D68678FECD52332548AA2F7B80246F08CA1B1 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/B2A41C892066E75043C42F6B634D68678FECD52332548AA2F7B80246F08CA1B1.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16980   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/4C713876EB8E4573397BA8091939B7BEE3CA51D839AE8B0D3D8A8966BE9C62F1 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/4C713876EB8E4573397BA8091939B7BEE3CA51D839AE8B0D3D8A8966BE9C62F1.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        16984   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/B2D804D802EF1B2C4D634515D8F2B5DBBDBF6227E1924D920FDCA3AA5B19EDF8 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/B2D804D802EF1B2C4D634515D8F2B5DBBDBF6227E1924D920FDCA3AA5B19EDF8.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm
per        17016   16819  0 22:48 ?        00:00:00 clang --std=c++17 -I /home/per/git/perlang/lib/stdlib/include -o /run/user/1001/perlang/tmp/unit_tests/01AFAB1092C98152B6001DBB2756D6CEBCD7EF75844FC4D87D4DAAAD5CF2BD29 -save-temps -Wall -Werror -Wno-implicit-const-int-float-conversion -Wno-integer-overflow -Wno-logical-op-parentheses -Wno-shift-overflow -Wno-shift-count-overflow -Wno-unused-value -Wno-unused-variable /run/user/1001/perlang/tmp/unit_tests/01AFAB1092C98152B6001DBB2756D6CEBCD7EF75844FC4D87D4DAAAD5CF2BD29.cc /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm

The problem doesn’t really seem to be clang, but it’s the linking that has gotten stuck somehow:

per        16937   16870  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/8FBE650ED26D0F2EF987B0294FFC2EFE81DCB7CD759ACE1E73FC37EF169B8812 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 8FBE650ED26D0F2EF987B0294FFC2EFE81DCB7CD759ACE1E73FC37EF169B8812.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16938   16878  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/0F16848B06AF1696FDB085D8729807BDB1CC24DD7ED69C2BE83219C89BE84ECA /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 0F16848B06AF1696FDB085D8729807BDB1CC24DD7ED69C2BE83219C89BE84ECA.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16939   16877  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/F6BCE829930DFB4737493279022769B47C549DF7A59E8FE185DA5C920BE28464 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib F6BCE829930DFB4737493279022769B47C549DF7A59E8FE185DA5C920BE28464.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16940   16879  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/07850289D114BDE65D3470E63FD6B8DFDDE3D9D6C084181AB1B5CED1173A2D0B /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 07850289D114BDE65D3470E63FD6B8DFDDE3D9D6C084181AB1B5CED1173A2D0B.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16941   16875  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/83A7CC3BA34486871CE3B67E78BFC0D20AD9C0A70AD2990469D8024F0B4952E3 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 83A7CC3BA34486871CE3B67E78BFC0D20AD9C0A70AD2990469D8024F0B4952E3.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16942   16869  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/1BC19F662B5A267378395ABC2D3063033B5CA144151A5B6F16A6955DB6618CF4 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 1BC19F662B5A267378395ABC2D3063033B5CA144151A5B6F16A6955DB6618CF4.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16946   16874  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/C5D5EBA02E3121CBA7697E248A77B297A3918DA22BE6400EEE7D47AEAA0D2AAC /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib C5D5EBA02E3121CBA7697E248A77B297A3918DA22BE6400EEE7D47AEAA0D2AAC.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16948   16872  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/951B921F5F7DADFA0358005E6FC2305BF3A25323631339AAC7385A91375EBCED /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 951B921F5F7DADFA0358005E6FC2305BF3A25323631339AAC7385A91375EBCED.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16949   16873  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/F2A30C1D5C56C6184B75D6D2BEDFD17A09E6ECB388A1BF3AFAD4F35BA33EEEB8 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib F2A30C1D5C56C6184B75D6D2BEDFD17A09E6ECB388A1BF3AFAD4F35BA33EEEB8.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16950   16871  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/72A38A6FCE387EB9E0D3F4472D189131742F561B3798643EDD612DC3AC11C1E5 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 72A38A6FCE387EB9E0D3F4472D189131742F561B3798643EDD612DC3AC11C1E5.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16956   16915  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/9A2E66BB41582EA4E9D89B3C6E1938484301C512EC1B3EC3FBE4EBD2BBB58E7E /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 9A2E66BB41582EA4E9D89B3C6E1938484301C512EC1B3EC3FBE4EBD2BBB58E7E.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16959   16919  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/22037B6CC7AC01C795E247D2E540303DAB50EC367F6A150ED539062305EA6B14 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 22037B6CC7AC01C795E247D2E540303DAB50EC367F6A150ED539062305EA6B14.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16960   16916  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/0EB693317599B284BE56C67F0A511FFCEFE106BF77BEC03D265D20043C6E29F7 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 0EB693317599B284BE56C67F0A511FFCEFE106BF77BEC03D265D20043C6E29F7.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16961   16917  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/FCC4240CC45F27A980CB72B06516827D30DEFA9F97BCC7247BF89EF642586AE4 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib FCC4240CC45F27A980CB72B06516827D30DEFA9F97BCC7247BF89EF642586AE4.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16977   16964  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/B2A41C892066E75043C42F6B634D68678FECD52332548AA2F7B80246F08CA1B1 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib B2A41C892066E75043C42F6B634D68678FECD52332548AA2F7B80246F08CA1B1.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16978   16963  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/B91FAA4A4661826563C1098209520A59D66D1309934D8E985DC955DA1EF3C54B /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib B91FAA4A4661826563C1098209520A59D66D1309934D8E985DC955DA1EF3C54B.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16979   16962  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/2BA0CC583C5CF86474B5964F7A9FB65B4CC1AB000393029B091ED3287055DA61 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 2BA0CC583C5CF86474B5964F7A9FB65B4CC1AB000393029B091ED3287055DA61.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16987   16980  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/4C713876EB8E4573397BA8091939B7BEE3CA51D839AE8B0D3D8A8966BE9C62F1 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 4C713876EB8E4573397BA8091939B7BEE3CA51D839AE8B0D3D8A8966BE9C62F1.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        16991   16984  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/B2D804D802EF1B2C4D634515D8F2B5DBBDBF6227E1924D920FDCA3AA5B19EDF8 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib B2D804D802EF1B2C4D634515D8F2B5DBBDBF6227E1924D920FDCA3AA5B19EDF8.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o
per        17021   17016  0 22:48 ?        00:00:00 /usr/bin/ld -pie --hash-style=both --build-id --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /run/user/1001/perlang/tmp/unit_tests/01AFAB1092C98152B6001DBB2756D6CEBCD7EF75844FC4D87D4DAAAD5CF2BD29 /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib 01AFAB1092C98152B6001DBB2756D6CEBCD7EF75844FC4D87D4DAAAD5CF2BD29.o /home/per/git/perlang/lib/stdlib/lib/libstdlib.a -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc/x86_64-linux-gnu/12/crtendS.o /lib/x86_64-linux-gnu/crtn.o

An interesting fact here: the number of clang and ld processes seem to be exactly 20, which is the same number as the CPU cores in this machine (Dell laptop with i7-12700H).

What is going on here, how do I even start debugging something like this?!? Any ideas are greatly appreciated…

Oh, and worth mentioning:

$ clang --version
Debian clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ ld --version
GNU ld (GNU Binutils for Debian) 2.40
Copyright (C) 2023 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

FWIW, this seems to be fully reproducible - I re-ran the tests right now and it hang in the exact same way. My unit tests spawn ~1500 or so compilations via clang so this is perhaps a bit of an edgy case. :sweat_smile: I believe xunit.net (the unit test framework I use) tries to run them in parallel to a certain extent.

Anyway, I attached the debugger (in CLion) to one of these ld processes. It’s not very helpful yet because I don’t have libc debugging symbols installed.

Installing the debugging symbols (apt-get install libc6-dbg), downloading the libc6 sources (apt-get source libc6) and opening up that project in CLion helped med get a little bit more details. I will post the next screenshot in a subsequent reply because the forum doesn’t trust me enough to be able to include multiple screenshots in a single message yet. :grinning:

The above screenshot only includes the libc6 sources though. I’ll try getting the binutils sources next to see if they are of any help.

Worth mentioning: this is from attaching to the ld process and breaking the active thread. Stepping over that line doesn’t seem to complete within any reasonable time, so it’s likely that the writes to fd 2 (stderr) are somehow stalled… perhaps because the parent process which spawned ld doesn’t read from stderr in time? I’ll try with the binutils source next.

I think I’m getting it now; this is completely an issue with my application rather than an issue in clang or binutils. :thinking: It turns out that ld emits a ton of linker errors in my case (because of unresolved symbols), and because I run clang from a C#-based app similar to this:

Process? process = Process.Start(new ProcessStartInfo
    FileName = "clang-15",

    ArgumentList =
    {
        // ...
    },
    RedirectStandardOutput = true,
    RedirectStandardError = true
 )

…the redirection of stderr causes an error here. It’s likely I’m doing this the wrong way on the C# side, and this causes all clang and ld processes to get stuck. Sorry for the noise.

I’ll keep this thread with these messages retained here now, perhaps it’ll help someone else someday.

Perlang.Compiler.PerlangCompilerException: Internal compiler error: compiling transpiled source /run/user/1001/perlang/tmp/unit_tests/F6BCE829930DFB47...

Perlang.Compiler.PerlangCompilerException
Internal compiler error: compiling transpiled source /run/user/1001/perlang/tmp/unit_tests/F6BCE829930DFB4737493279022769B47C549DF7A59E8FE185DA5C920BE28464.cc failed. Detailed error will follow:

/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): warning: relocation against `_ZTVNSt6locale5facetE' in read-only section `.text._ZNSt6locale5facetC2Em[_ZNSt6locale5facetC5Em]'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `perlang::print(float)':
print.cpp:(.text+0x29f): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text+0x2b0): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `perlang::print(double)':
print.cpp:(.text+0x452): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text+0x463): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::system_error::system_error(std::error_code, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x80): undefined reference to `std::runtime_error::runtime_error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x8c): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x98): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xa4): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xab): undefined reference to `vtable for std::system_error'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xdd): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xee): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNSt12system_errorC2ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt12system_errorC5ESt10error_codeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0xff): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::locale::facet::facet(unsigned long)':
print.cpp:(.text._ZNSt6locale5facetC2Em[_ZNSt6locale5facetC5Em]+0xf): undefined reference to `vtable for std::locale::facet'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::format_error::runtime_error(char const*)':
print.cpp:(.text._ZN3fmt3v1012format_errorCI2St13runtime_errorEPKc[_ZN3fmt3v1012format_errorCI5St13runtime_errorEPKc]+0x1f): undefined reference to `std::runtime_error::runtime_error(char const*)'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::adjust_precision(int&, int)':
print.cpp:(.text._ZN3fmt3v106detail16adjust_precisionERii[_ZN3fmt3v106detail16adjust_precisionERii]+0x40): undefined reference to `__cxa_allocate_exception'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail16adjust_precisionERii[_ZN3fmt3v106detail16adjust_precisionERii]+0x71): undefined reference to `__cxa_throw'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail16adjust_precisionERii[_ZN3fmt3v106detail16adjust_precisionERii]+0x8f): undefined reference to `__cxa_free_exception'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::assert_fail(char const*, int, char const*)':
print.cpp:(.text._ZN3fmt3v106detail11assert_failEPKciS3_[_ZN3fmt3v106detail11assert_failEPKciS3_]+0x25): undefined reference to `std::terminate()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::throw_format_error(char const*)':
print.cpp:(.text._ZN3fmt3v106detail18throw_format_errorEPKc[_ZN3fmt3v106detail18throw_format_errorEPKc]+0x10): undefined reference to `__cxa_allocate_exception'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail18throw_format_errorEPKc[_ZN3fmt3v106detail18throw_format_errorEPKc]+0x34): undefined reference to `__cxa_throw'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail18throw_format_errorEPKc[_ZN3fmt3v106detail18throw_format_errorEPKc]+0x3f): undefined reference to `__cxa_free_exception'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::fwrite_fully(void const*, unsigned long, unsigned long, _IO_FILE*)':
print.cpp:(.text._ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE[_ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE]+0x4b): undefined reference to `__cxa_allocate_exception'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE[_ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE]+0x98): undefined reference to `std::system_error::~system_error()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE[_ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE]+0xa2): undefined reference to `typeinfo for std::system_error'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE[_ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE]+0xad): undefined reference to `__cxa_throw'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE[_ZN3fmt3v106detail12fwrite_fullyEPKvmmP8_IO_FILE]+0xb8): undefined reference to `__cxa_free_exception'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::write_loc(fmt::v10::appender, fmt::v10::loc_value, fmt::v10::format_specs<char> const&, fmt::v10::detail::locale_ref)':
print.cpp:(.text._ZN3fmt3v106detail9write_locENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEENS1_10locale_refE[_ZN3fmt3v106detail9write_locENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEENS1_10locale_refE]+0x11a): undefined reference to `std::locale::~locale()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail9write_locENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEENS1_10locale_refE[_ZN3fmt3v106detail9write_locENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEENS1_10locale_refE]+0x141): undefined reference to `std::locale::~locale()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::detail::loc_writer<char>::~loc_writer()':
print.cpp:(.text._ZN3fmt3v106detail10loc_writerIcED2Ev[_ZN3fmt3v106detail10loc_writerIcED5Ev]+0x18): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail10loc_writerIcED2Ev[_ZN3fmt3v106detail10loc_writerIcED5Ev]+0x28): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106detail10loc_writerIcED2Ev[_ZN3fmt3v106detail10loc_writerIcED5Ev]+0x38): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::format_facet<std::locale>::do_put(fmt::v10::appender, fmt::v10::loc_value, fmt::v10::format_specs<char> const&) const':
print.cpp:(.text._ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE[_ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE]+0x5e): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: print.cpp:(.text._ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE[_ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE]+0x85): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: print.cpp:(.text._ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE[_ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE]+0xac): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: print.cpp:(.text._ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE[_ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE]+0x110): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE[_ZNK3fmt3v1012format_facetISt6localeE6do_putENS0_8appenderENS0_9loc_valueERKNS0_12format_specsIcEE]+0x12d): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::vsystem_error(int, fmt::v10::basic_string_view<char>, fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender, char> >)':
print.cpp:(.text._ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x21): undefined reference to `std::_V2::generic_category()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x78): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v1013vsystem_errorEiNS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x89): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::vformat[abi:cxx11](fmt::v10::basic_string_view<char>, fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender, char> >)':
print.cpp:(.text._ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x2d): undefined reference to `std::allocator<char>::allocator()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x42): undefined reference to `std::allocator<char>::~allocator()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v107vformatB5cxx11ENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x7f): undefined reference to `std::allocator<char>::~allocator()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `fmt::v10::vprint(_IO_FILE*, fmt::v10::basic_string_view<char>, fmt::v10::basic_format_args<fmt::v10::basic_format_context<fmt::v10::appender, char> >)':
print.cpp:(.text._ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x2d): undefined reference to `std::allocator<char>::allocator()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0x42): undefined reference to `std::allocator<char>::~allocator()'
/usr/bin/ld: print.cpp:(.text._ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE[_ZN3fmt3v106vprintEP8_IO_FILENS0_17basic_string_viewIcEENS0_17basic_format_argsINS0_20basic_format_contextINS0_8appenderEcEEEE]+0xcc): undefined reference to `std::allocator<char>::~allocator()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::~_Alloc_hider()':
print.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD2Ev[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderD5Ev]+0x14): undefined reference to `std::allocator<char>::~allocator()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<std::allocator<char> >(unsigned long, char, std::allocator<char> const&)':
print.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC5IS3_EEmcRKS3_]+0x26): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_local_data()'
/usr/bin/ld: print.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC5IS3_EEmcRKS3_]+0x3b): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Alloc_hider::_Alloc_hider(char*, std::allocator<char> const&)'
/usr/bin/ld: print.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEmcRKS3_[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC5IS3_EEmcRKS3_]+0x52): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct(unsigned long, char)'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)':
print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_]+0x24): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_]+0x37): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*)'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_PKS5_]+0x48): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()'
/usr/bin/ld: /home/per/git/perlang/lib/stdlib/lib/libstdlib.a(print.cpp.o): in function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)':
print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_]+0x2f): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_]+0x3e): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_]+0x51): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::capacity() const'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_[_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_S9_]+0x63): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::capacity() const'
/usr/bin/ld: print.cpp:(.text._ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEO

The output has reached the limit and was truncated.
To view the full output use the 'Open Full Test Output in Editor' action.
You can also change the limit in 'File | Settings | Build, Execution, Deployment | Unit Testing'.

This might very well be exactly what I’m running into in fact: ProcessStartInfo.RedirectStandardOutput WARNING

The documentation explains that to avoid potential deadlocks, you should read from the output/error streams before waiting for the process to exit, but it fails to explain why - except that it can cause deadlocks.

I had a piece of code that was written more or less like the example above and it worked perfectly every single time, except when the output from the process was longer than a certain amount of characters then it just hang.

(his example is referring to Windows Named Pipes, which is obviously not exactly equivalent since I’m running this on Debian GNU/Linux… but perhaps the Linux-based implementation uses a similar deadlock-prone mechanism as well)


Yep. Following the link from his article to the documentation (ProcessStartInfo.RedirectStandardOutput Property (System.Diagnostics) | Microsoft Learn) helped me fix my code. :tada: Now I can get back to what I was really trying to do again… :joy: