Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHieu Hoang <hieuhoang@gmail.com>2015-04-30 10:45:25 +0300
committerHieu Hoang <hieuhoang@gmail.com>2015-04-30 10:45:25 +0300
commitebc5a51d320843e9579c8e0e42486090aed612c8 (patch)
treea3677ed6798a9cb2287b347066fdc51328618198 /scripts
parent1c99b2b2b849be7530468a611d56f42a8c4ed2f0 (diff)
parentc116fa0dbfd484463318aa05da8ed9ee2c7a2de0 (diff)
Merge pull request #111 from unhammer/extract-perl-safewait
die if the forked extract exited with error
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/generic/extract-parallel.perl26
1 files changed, 24 insertions, 2 deletions
diff --git a/scripts/generic/extract-parallel.perl b/scripts/generic/extract-parallel.perl
index 2b2b4333d..ebfe6639a 100755
--- a/scripts/generic/extract-parallel.perl
+++ b/scripts/generic/extract-parallel.perl
@@ -150,9 +150,8 @@ for (my $i = 0; $i < $numParallel; ++$i)
print "glueArg=$glueArg \n";
my $cmd = "$extractCmd $TMPDIR/target.$numStr $TMPDIR/source.$numStr $TMPDIR/align.$numStr $TMPDIR/extract.$numStr $glueArg $otherExtractArgs $weightsCmd --SentenceOffset ".($i*$linesPerSplit)." 2>> /dev/stderr \n";
- print STDERR $cmd;
- `$cmd`;
+ safesystem($cmd) or die;
exit();
}
else
@@ -164,6 +163,10 @@ for (my $i = 0; $i < $numParallel; ++$i)
# wait for everything is finished
foreach (@children) {
waitpid($_, 0);
+ if($? != 0) {
+ print STDERR "ERROR: Failed to execute: @_\n $!\n";
+ exit(1);
+ }
}
# merge
@@ -326,3 +329,22 @@ sub NumStr($)
return $numStr;
}
+sub safesystem {
+ print STDERR "Executing: @_\n";
+ system(@_);
+ if ($? == -1) {
+ print STDERR "ERROR: Failed to execute: @_\n $!\n";
+ exit(1);
+ }
+ elsif ($? & 127) {
+ printf STDERR "ERROR: Execution of: @_\n died with signal %d, %s coredump\n",
+ ($? & 127), ($? & 128) ? 'with' : 'without';
+ exit(1);
+ }
+ else {
+ my $exitcode = $? >> 8;
+ print STDERR "Exit code: $exitcode\n" if $exitcode;
+ return ! $exitcode;
+ }
+}
+