Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#58850 closed defect (worksforme)

VLC @3.0.7 fails due to "write error" -- fixed by disabling parallel building

Reported by: kencu (Ken) Owned by: RJVB (René Bertin)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: vlc

Description

During the build of VLC on my 10.14 MacPro many-core machine, I repeatedly was getting this error:

libtool: link: /usr/bin/grep -E -e "^vlc_entry" ".libs/libmotion_plugin.exp" > ".libs/libmotion_plugin.expT"
libtool: link: ( cd ".libs" && rm -f "libi420_nv12_plugin.la" && ln -s "../libi420_nv12_plugin.la" "libi420_nv12_plugin.la" )
libtool: link: mv -f ".libs/libmotion_plugin.expT" ".libs/libmotion_plugin.exp"
libtool: link: ( cd ".libs" && rm -f "libhttps_plugin.la" && ln -s "../libhttps_plugin.la" "libhttps_plugin.la" )
libtool: link: sed -e 's|^|_|' < .libs/libmotion_plugin.exp > .libs/libmotion_plugin-symbols.expsym
libtool: link: /usr/bin/clang  -o .libs/libmotion_plugin.dylib -bundle  control/.libs/motion.o   -Wl,-force_load,./.libs/libvlc_motion.a  ../compat/.libs/libcompat.a -L/opt/local/lib -L/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_multimedia_VLC/VLC/work/vlc-3.0.7.1/contrib/lib ../src/.libs/libvlccore.dylib -lintl -lidn -liconv -lm  -Os -arch x86_64 -O3 -fstack-protector-strong -Wl,-framework -Wl,IOKit -Wl,-framework -Wl,CoreFoundation -Wl,-headerpad_max_install_names -Wl,-syslibroot -Wl,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -arch x86_64 -Wl,-headerpad_max_install_names   -Wl,-exported_symbols_list,.libs/libmotion_plugin-symbols.expsym
libtool: link: ( cd ".libs" && rm -f "librtp_plugin.la" && ln -s "../librtp_plugin.la" "librtp_plugin.la" )
libtool: link: ( cd ".libs" && rm -f "libi420_10_p010_plugin.la" && ln -s "../libi420_10_p010_plugin.la" "libi420_10_p010_plugin.la" )
libtool: link: ( cd ".libs" && rm -f "libmotion_plugin.la" && ln -s "../libmotion_plugin.la" "libmotion_plugin.la" )
make[4]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_multimedia_VLC/VLC/work/vlc-3.0.7.1/modules'
make[4]: write error
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_multimedia_VLC/VLC/work/vlc-3.0.7.1/modules'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_multimedia_VLC/VLC/work/vlc-3.0.7.1/modules'
Making all in lib

It disappeared when I added

use_parallel_build no

Attachments (1)

vlc-fail-parallel-enabled.log (3.7 MB) - added by kencu (Ken) 5 years ago.

Change History (4)

Changed 5 years ago by kencu (Ken)

comment:1 Changed 5 years ago by RJVB (René Bertin)

Interesting, a locking issue in libtool? Reminds me that I'm testing a binary drop-in replacement for that script; I should try it with VLC (evidently there are other advantages to using a compiled alternative).

Anyway, I've never seen this on my lowly 4-core machines. Could you please test with build.jobs=4, or if "many" means "much" more than 4 cores, could you try to reduce the job count until your issue disappears? VLC is a large enough project not to disable parallel building just because it fails with (too) "many cores".

comment:2 Changed 5 years ago by kencu (Ken)

Resolution: worksforme
Status: assignedclosed

this seems to work for the vast majority of users.

comment:3 Changed 5 years ago by RJVB (René Bertin)

Does it continue NOT to work for you? Have you ever tried to figure out from what amount of parallelism onwards (build.jobs=N) the problem occurs (or rather, how many parallel jobs you can use without running into problems)?

If so, would you be interested in trying with the binary replacement I mentioned (slibtool)? That should now work.

FWIW, VLC only uses libtool for the linking steps (via a rather complicated mechanism), so there is little to be gained from using it in terms of performance - but "builds" vs. "fails to build" would be an infinite gain in that department ;)

EDIT: I tried building with build.jobs=32 and that worked fine. That was on Linux though; will try the same on my Mac when I get the chance.

Last edited 5 years ago by RJVB (René Bertin) (previous) (diff)
Note: See TracTickets for help on using tickets.