[Bug 225899] devel/gmake: parallel builds sometimes deadlock

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Feb 14 18:43:25 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225899

            Bug ID: 225899
           Summary: devel/gmake: parallel builds sometimes deadlock
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Keywords: patch
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: tijl at FreeBSD.org
          Reporter: truckman at FreeBSD.org
 Attachment #190630 maintainer-approval?
             Flags:
          Assignee: tijl at FreeBSD.org
             Flags: maintainer-feedback?(tijl at FreeBSD.org)

Created attachment 190630
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=190630&action=edit
upstream patch to fix gmake jobserver hang when using pselect()

I have ALLOW_MAKE_JOBS=yes in poudriere.conf on my package build machine.  I
see infrequent, random build runaway failures for different ports, where the
thing that they all have in common is that the leftover leaf processes are
always gmake in some sort of wait state, and each gmake process has one or more
zombie child processes.

December 2016 - 10-STABLE jail:
USER   PID %CPU %MEM   VSZ  RSS TT  STAT STARTED    TIME COMMAND
root 76087  0.0  0.0  9132 1336  0  I+J   8:51AM 0:00.04 /usr/bin/make -C
/usr/p
orts/multimedia/gstreamer-plugins-good build
root 76113  0.0  0.0 14680 1896  0  I+J   8:51AM 0:00.01 - gmake -f Makefile
-j8
 DESTDIR=/wrkdirs/usr/ports/multimedia/gstreamer-plugins-good/work/stage all
root 76129  0.0  0.0 14680 1916  0  I+J   8:51AM 0:00.01 |-- gmake -C
videofilte
r
root 76148  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.59 | `-- <defunct>
root 76156  0.0  0.0 14680 1968  0  I+J   8:51AM 0:00.01 |-- gmake -C audiofx
root 76625  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.34 | `-- <defunct>
root 76164  0.0  0.0 14680 1912  0  I+J   8:51AM 0:00.01 |-- gmake -C
audioparse
rs
root 78664  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.43 | `-- <defunct>
root 77796  0.0  0.0 14680 1948  0  I+J   8:51AM 0:00.01 |-- gmake -C
debugutils
root 78663  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.00 | `-- <defunct>
root 78193  0.0  0.0 14680 1920  0  I+J   8:51AM 0:00.01 |-- gmake -C
deinterlac
e
root 78232  0.0  0.0 14680 1952  0  I+J   8:51AM 0:00.01 | `-- gmake all-am
root 78566  0.0  0.0     0    0  0  Z+J   8:51AM 0:01.45 |   `-- <defunct>
root 78681  0.0  0.0 14680 1940  0  I+J   8:51AM 0:00.01 |-- gmake -C effectv
root 78819  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.28 | `-- <defunct>
root 78830  0.0  0.0 14680 1916  0  I+J   8:51AM 0:00.01 |-- gmake -C equalizer
root 78834  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.43 | `-- <defunct>
root 78952  0.0  0.0 14680 1912  0  I+J   8:51AM 0:00.01 `-- gmake -C flv
root 79075  0.0  0.0     0    0  0  Z+J   8:51AM 0:00.00   `-- <defunct>

September 2017 - 12-CURRENT jail:
USER   PID %CPU %MEM   VSZ   RSS TT  STAT STARTED    TIME COMMAND
root  8279  0.0  0.0 10832     0  1  IW+J -       0:00.00 /usr/bin/make -C
/usr/
ports/editors/openoffice-devel build
root  8550  0.0  0.0 24852     0  1  IW+J -       0:00.00 - perl -S
/wrkdirs/usr
/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solenv/bin/build.pl --all
-P
2 -- -P4
root 64577  0.0  0.0 24852     0  1  IW+J -       0:00.00 `-- perl -S
/wrkdirs/u
sr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solenv/bin/build.pl --all
-P2 -- -P4
root 64578  0.0  0.0 11700     0  1  IW+J -       0:00.00   `-- dmake -P4
root 64583  0.0  0.0 12688     0  1  IW+J -       0:00.00     `--
/usr/local/bin
/bash -c cd .. && gmake  -r -j4   && gmake  -r deliverlog
root 64584  0.0  0.1 53556 44532  1  I+J  20:32   0:29.23       `-- gmake -r
-j4
root 30217  0.0  0.0     0     0  1  Z+J  20:49   0:00.01         |-- <defunct>
root 30220  0.0  0.0     0     0  1  Z+J  20:49   0:00.01         |-- <defunct>
root 30234  0.0  0.0     0     0  1  Z+J  20:49   0:00.01         |-- <defunct>
root 30236  0.0  0.0     0     0  1  Z+J  20:49   0:00.01         `-- <defunct>


USER     PID %CPU %MEM   VSZ   RSS TT  STAT STARTED    TIME COMMAND
nobody 43355  0.0  0.0 10500  1596  1  I+J  11:09   0:00.05 /usr/bin/make -C
/usr/ports/lang/rust build
nobody 43444  0.0  0.1 46368 36944  1  I+J  11:09   0:07.20 -
/usr/local/bin/python2.7
/wrkdirs/usr/ports/lang/rust/work/rustc-1.23.0-src/x.py build --verbose
--config ./config.toml --jobs 7
nobody 71768  0.0  0.0 25436 11536  1  I+J  11:10   0:00.21 `--
/wrkdirs/usr/ports/lang/rust/work/rustc-1.23.0-src/build/bootstrap/debug/bootstrap
build --verbose --config ./config.toml --jobs 7
nobody  9694  0.0  0.0 23260 13172  1  I+J  11:14   0:00.01   `-- cmake --build
. --target install --config Release -- -j 7
nobody  9746  0.0  0.0 11976  2412  1  I+J  11:14   0:00.01     `--
/usr/local/bin/gmake -j 7 install
nobody  9784  0.0  0.0 12624  3292  1  I+J  11:14   0:00.08       `--
/usr/local/bin/gmake -f CMakeFiles/Makefile2 all
nobody  9539  0.0  0.0 11976  2404  1  I+J  11:16   0:00.02         |--
/usr/local/bin/gmake -f
lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/build.make
lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/build
nobody 10364  0.0  0.0     0     0  1  Z+J  11:17   0:02.12         | `--
<defunct>
nobody 10119  0.0  0.0 11908  2264  1  I+J  11:14   0:00.01         |--
/usr/local/bin/gmake -f lib/TableGen/CMakeFiles/LLVMTableGen.dir/build.make
lib/TableGen/CMakeFiles/LLVMTableGen.dir/build
nobody 10231  0.0  0.0     0     0  1  Z+J  11:14   0:00.95         | `--
<defunct>
nobody 10420  0.0  0.0 12020  2524  1  I+J  11:14   0:00.02         |--
/usr/local/bin/gmake -f lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/build.make
lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/build
nobody  9353  0.0  0.0     0     0  1  Z+J  11:16   0:00.86         | `--
<defunct>
nobody 10667  0.0  0.0 12476  2800  1  I+J  11:14   0:00.03         |--
/usr/local/bin/gmake -f lib/Support/CMakeFiles/LLVMSupport.dir/build.make
lib/Support/CMakeFiles/LLVMSupport.dir/build
nobody 10766  0.0  0.0     0     0  1  Z+J  11:14   0:04.21         | `--
<defunct>
nobody 10726  0.0  0.0 12120  2576  1  I+J  11:14   0:00.03         |--
/usr/local/bin/gmake -f
utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/build.make
utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/build
nobody  9446  0.0  0.0     0     0  1  Z+J  11:16   0:03.01         | `--
<defunct>
nobody 10743  0.0  0.0 12140  2652  1  I+J  11:14   0:00.04         |--
/usr/local/bin/gmake -f lib/MC/CMakeFiles/LLVMMC.dir/build.make
lib/MC/CMakeFiles/LLVMMC.dir/build
nobody 10795  0.0  0.0     0     0  1  Z+J  11:14   0:02.35         | `--
<defunct>
nobody 10790  0.0  0.0 12412  2828  1  I+J  11:17   0:00.05         `--
/usr/local/bin/gmake -f
lib/DebugInfo/PDB/CMakeFiles/LLVMDebugInfoPDB.dir/build.make
lib/DebugInfo/PDB/CMakeFiles/LLVMDebugInfoPDB.dir/build
nobody 17155  0.0  0.0     0     0  1  Z+J  11:17   0:00.01           `--
<defunct>

This turns out to be a known bug in the jobserver code when it is configured to
use pselect().  It has been patched upstream, but a version of gmake with this
fix has not yet been released.  See:
  https://savannah.gnu.org/bugs/?49014
  https://savannah.gnu.org/bugs/?51159

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list