Using Meson build and GCC on a personal C11 project with GLib on Linux Fedora, I keep randomly getting the following error when compiling :
movie.s: Assembler messages:
movie.s:6916: Error: no such instruction: `te.gnu-stack,"",@progbits'
ninja: build stopped: subcommand failed.
After inspecting the faulty file, the generated ASM ending is malformed (the last instruction look ill-copied ?)
Incorrect version :
.LASF52:
.string "GClassInitFunc"
.ident "GCC: (GNU) 10.3.1 20210422 (Red Hat 10.3.1-1)"
.section .note.GNU-stack,"",@progbits
te.GNU-stack,"",@progbits
Correct version :
.LASF52:
.string "GClassInitFunc"
.ident "GCC: (GNU) 10.3.1 20210422 (Red Hat 10.3.1-1)"
.section .note.GNU-stack,"",@progbits
As you can see on the last line of the faulty ASM, this output line is appended :
te.GNU-stack,"",@progbits
When this error occur, I basically relaunch the compilation process, and sometimes it just 'magically' work (without any modifications to any files).
My compiler versions :
- Linux Fedora release 33 (Thirty Three)
- (GCC) 10.3.1 20210422 (Red Hat 10.3.1-1) (April 8, 2021)
- meson --buildtype=debug : without optimizations
Does anyone have any idea what could be causing this?
EDIT:
Solved the issue : Posted the issue on Meson Github : github.com/mesonbuild/meson/issues/8862 ; it was "save-temps" causing the harm, because ninja use parallel compilation which caused the intermediate files to be overwritten on the same time. You could either disable "-save-temps" or use "-j1" option to limit to one process
In summary : save-temps is not full parallel-safe when building multiple objects/executable with a common source file.