Skip to content

Commit 611137a

Browse files
authored
Merge pull request moby#3066 from jedevc/fix-shared-op-sigsegv-followup
solver: correct cache nil return value in Exec
2 parents 46c8b9e + 0347fc3 commit 611137a

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

solver/jobs.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -619,8 +619,9 @@ type sharedOp struct {
619619
subBuilder *subBuilder
620620
err error
621621

622-
execRes *execRes
623-
execErr error
622+
execRes *execRes
623+
execDone bool
624+
execErr error
624625

625626
cacheRes []*CacheMap
626627
cacheDone bool
@@ -817,10 +818,10 @@ func (s *sharedOp) Exec(ctx context.Context, inputs []Result) (outputs []Result,
817818
}
818819
flightControlKey := "exec"
819820
res, err := s.g.Do(ctx, flightControlKey, func(ctx context.Context) (ret interface{}, retErr error) {
820-
if s.execErr != nil {
821-
return nil, s.execErr
822-
}
823-
if s.execRes != nil {
821+
if s.execDone {
822+
if s.execErr != nil {
823+
return nil, s.execErr
824+
}
824825
return s.execRes, nil
825826
}
826827
release, err := op.Acquire(ctx)
@@ -857,6 +858,7 @@ func (s *sharedOp) Exec(ctx context.Context, inputs []Result) (outputs []Result,
857858
}
858859
}
859860
if complete {
861+
s.execDone = true
860862
if res != nil {
861863
var subExporters []ExportableCacheKey
862864
s.subBuilder.mu.Lock()

0 commit comments

Comments
 (0)