Skip to contentSkip to conversation

tools/iio: build race condition

DISCUSSION Alexander Stein 1 participant 1 message Nov 13, 2017 Kbuild

lore
Share & tools
lore
#0 lore raw

Hi,

I tried to compile the new v4.14 kernel and hit a race condition in the build system of tools/iio. Here is my output (sorry for German strings, I wasn't able to reproduce with LANG=C):

Quoted 14 lines

{master linux} % make O=build_x86/ -j9 tools/iio
make[1]: Verzeichnis „/home/alex/Dokumente/repo/linux/build_x86“ wird betreten
DESCEND iio
mkdir -p /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio 2>&1 || true
ln -sf /home/alex/Dokumente/repo/linux/tools/iio/../../include/uapi/linux/iio/events.h /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio ln -sf /home/alex/Dokumente/repo/linux/tools/iio/../../include/uapi/linux/iio/types.h /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio

  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_generic_buffer.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  LD       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor-in.o
  LD       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio-in.o
Quoted 12 lines

/home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o: file not recognized: File truncated
make[4]: *** [/home/alex/Dokumente/repo/linux/tools/build/Makefile.build:145: /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor-in.o] Fehler 1 /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o: file not recognized: File truncated
make[3]: *** [Makefile:45: /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor-in.o] Fehler 2
make[3]: *** Es wird auf noch nicht beendete Prozesse gewartet....
make[4]: *** [/home/alex/Dokumente/repo/linux/tools/build/Makefile.build:145: /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio-in.o] Fehler 1 make[3]: *** [Makefile:39: /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio-in.o] Fehler 2
LD /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_generic_buffer-in.o
make[2]: *** [Makefile:62: iio] Fehler 2
make[1]: *** [/home/alex/Dokumente/repo/linux/Makefile:1628: tools/iio] Fehler 2
make[1]: Verzeichnis „/home/alex/Dokumente/repo/linux/build_x86“ wird verlassen
make: *** [Makefile:146: sub-make] Fehler 2

This is my log using LANG=C:

Quoted 21 lines

{master linux} % git describe
v4.14-3-gd893dbcff8e3
{master linux} % rm -fr build_x86/tools/
{master linux} % LANG=C make O=build_x86/ -j9 tools/iio
make[1]: Entering directory '/home/alex/Dokumente/repo/linux/build_x86'
DESCEND iio
mkdir -p /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio 2>&1 || true
ln -sf /home/alex/Dokumente/repo/linux/tools/iio/../../include/uapi/linux/iio/events.h /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio ln -sf /home/alex/Dokumente/repo/linux/tools/iio/../../include/uapi/linux/iio/types.h /home/alex/Dokumente/repo/linux/build_x86/tools/iio/include/linux/iio

  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_generic_buffer.o
  CC       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_utils.o
  LD       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor-in.o
  LINK     /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_event_monitor
  LD       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio-in.o
  LD       /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_generic_buffer-in.o
  LINK     /home/alex/Dokumente/repo/linux/build_x86/tools/iio/lsiio
  LINK     /home/alex/Dokumente/repo/linux/build_x86/tools/iio/iio_generic_buffer
Quoted 1 line

make[1]: Leaving directory '/home/alex/Dokumente/repo/linux/build_x86'

In both cases tools/iio/iio_utils.o is compiled thrice. Depending on the exact timing you might get a truncated file. I suspect the following commit: 18956cf2d78a ("iio: tools: move to tools buildsystem", 2017-07-29) as iio_utils.o is referenced in all 3 tools.

Best regards,
Alexander