Fix profile-build
authorMarco Costalba <mcostalba@gmail.com>
Tue, 8 Nov 2011 06:34:44 +0000 (07:34 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 8 Nov 2011 06:39:06 +0000 (07:39 +0100)
After async I/O patches 'bench' changed behaviour and now waits for
input at the end of the test run. This is due to listener thread stay
blocked on std::getline() even after test run is finished, as soon as
we feed something the thread unblocks and then quickly exits.

This is not a big problem, but has the bad side effect of breaking
profile builds that hang forever at the end of the test run.

The tricky workaround is to create a pipe that connects to stockfish
input and then, when test run is finished, breaking the pipe: this
makes std::getline() immediately return.

So this patch adds a 'sleep 10' piped into 'stockfish bench' test run
command. After 10 seconds sleep ends, the pipe breaks and 'bench'
finishes as usual.

Thanks to Oliver Korff for reporting the issue, and to Mike Whiteley
for having co-authored this solution.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/Makefile

index 669052f4b3819a78439731b099882a5c7244bdcf..7e51d5045bffd6df033fbbcd3ad8d9bc4dc106c9 100644 (file)
@@ -385,7 +385,7 @@ profile-build:
        $(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_make)
        @echo ""
        @echo "Step 2/4. Running benchmark for pgo-build ..."
-       @$(PGOBENCH) > /dev/null
+       @sleep 10 | $(PGOBENCH) > /dev/null
        @echo ""
        @echo "Step 3/4. Building final executable ..."
        @touch *.cpp
@@ -405,14 +405,14 @@ double-profile-build:
        $(MAKE) ARCH=x86-64 COMP=$(COMP) $(profile_make)
        @echo ""
        @echo "Step 2/6. Running benchmark for pgo-build (popcnt disabled)..."
-       @$(PGOBENCH) > /dev/null
+       @sleep 10 | $(PGOBENCH) > /dev/null
        @echo ""
        @echo "Step 3/6. Building executable for benchmark (popcnt enabled)..."
        @touch *.cpp *.h
        $(MAKE) ARCH=x86-64-modern COMP=$(COMP) $(profile_make)
        @echo ""
        @echo "Step 4/6. Running benchmark for pgo-build (popcnt enabled)..."
-       @$(PGOBENCH) > /dev/null
+       @sleep 10 | $(PGOBENCH) > /dev/null
        @echo ""
        @echo "Step 5/6. Building final executable ..."
        @touch *.cpp *.h