| Summary: | bison-native build race | ||
|---|---|---|---|
| Product: | [Build System, Metadata & Runtime] OE-Core | Reporter: | Richard Purdie <richard.purdie> |
| Component: | core | Assignee: | Adrian Bunk <bunk> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | Medium+ | CC: | bunk, meta.mr.watcher, meta.watcher, mingli.yu, raj.khem, randy.macleod |
| Version: | 3.0 | ||
| Target Milestone: | 3.2 M1 | ||
| Hardware: | x86 | ||
| OS: | Multiple | ||
| Whiteboard: | |||
| OS type for building Yocto: | --- | Type of Regression: | --- |
| Verified: | Documentation change: | No (bug/feature does not impact docs) | |
|
Description
Richard Purdie
2020-03-06 08:45:59 UTC
(In reply to comment #0) > | AnnotationList.c:(.text+0x658): undefined reference to `rpl_fprintf' rpl_fprintf is the gnulib replacement from the fprintf-posix module. > rerunning the build passed. Once it failed it was persistent in the build > that failed so files appear corrupted. Is this re-using configure results from a build host running a kernel with a different set of security features enabled? The fprintf-posix replacement is used for me on Ubuntu 18.04 due to: ... checking whether snprintf fully supports the 'n' directive... no ... configure:14698: ./conftest *** %n in writable segment detected *** ../bison-3.5.2/configure: line 3041: 31456 Aborted ... Workaround for bison-native: EXTRA_OECONF += "gl_cv_func_printf_directive_n=yes" Two updates on that: 1. The relevant difference is not in the kernel, it is whether the host gcc defaults to _FORTIFY_SOURCE=2 (like in recent Ubuntu releases). 2. Correct would be EXTRA_OECONF += "gl_cv_func_printf_directive_n=no", bison is supposed to use the gnulib replacement functions on glibc systems with _FORTIFY_SOURCE > 0. Always adding -U_FORTIFY_SOURCE when building with the host gcc might be an alternative (untested). Thanks Adrian, that is really helpful and hints what kind of issue we're looking for. It was on our Ubuntu build performance worker. What puzzles me a bit is those are sstate isolated and would always build from scratch so why would this happen in one build but not any others? :/ Richard, does setting gl_cv_func_printf_directive_n=no solves the race ? on debian10/archlinux it gets gl_cv_func_printf_directive_n=yes but ubuntu 16/18/20 all get it set to 'no', I think to disable it explicitly will solve this problem perhaps at some added performance cost of using gnulib emulation wrapper. another way to look is to add CPPFLAGS += "-Drpl_fprintf=fprintf" As a race issue, is there any hints how to reproduce the issue? |