Parallel races in genrb

Description

Related to ICU-13595, in parallel builds the use of genrb in data/ will occasionally segfault. Many variations of the input files but the segfault always looks like this:

LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/genrb -s ./misc -d ./out/build/icudt66l -i ./out/build/icudt66l -k -q pluralRanges.txt ... 1577 make[1]: *** [../data/rules.mk:732: out/build/icudt66l/pluralRanges.res] Segmentation fault (core dumped)

ICU4C 67.1, on Linux.

Activity

Show:
Markus Scherer
August 4, 2020 at 11:18 PM

Don’t see a reply from Ross; I just approved the PR.

Shane Carr
July 10, 2020 at 7:29 PM
Ross Burton
June 29, 2020 at 10:33 AM

Some comments from a colleague:

The specific bug is that rules.mk has:

LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/gencnval -s . -d ./out/build/icudt66l mappings/convrtrs.txt

which creates a file and numerous rules like

LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH  ../bin/genrb -s ./misc -d ./out/build/icudt67l -i ./out/build/icudt67l -k -q numberingSystems.txt

which quietly read it.

There is no prerequisite for the former to complete first. The race is extra complicated to fix as rules.mk is itself generated through a custom in-tree python tool.

Markus Scherer
June 24, 2020 at 6:02 PM

Can you describe the problem/symptom in more detail? Which version of ICU? Platform? Command lines?

Fixed

Details

Assignee

Reporter

Components

Priority

Time Needed

Hours

Fix versions

Created June 23, 2020 at 10:00 AM
Updated September 30, 2020 at 6:53 PM
Resolved September 30, 2020 at 6:53 PM