Browse Source

llm: prevent race appending to slice (#3320)

Blake Mizerany 1 year ago
parent
commit
acfa2b9422
1 changed files with 6 additions and 2 deletions
  1. 6 2
      llm/payload_common.go

+ 6 - 2
llm/payload_common.go

@@ -11,6 +11,7 @@ import (
 	"path/filepath"
 	"runtime"
 	"strings"
+	"sync"
 
 	"golang.org/x/exp/slices"
 	"golang.org/x/sync/errgroup"
@@ -147,9 +148,10 @@ func extractDynamicLibs(payloadsDir, glob string) ([]string, error) {
 	if err != nil || len(files) == 0 {
 		return nil, payloadMissing
 	}
-	libs := []string{}
 
-	g := new(errgroup.Group)
+	var mu sync.Mutex
+	var libs []string
+	var g errgroup.Group
 	for _, file := range files {
 		pathComps := strings.Split(file, "/")
 		if len(pathComps) != pathComponentCount {
@@ -182,7 +184,9 @@ func extractDynamicLibs(payloadsDir, glob string) ([]string, error) {
 
 			destFile := filepath.Join(targetDir, filepath.Base(filename))
 			if strings.Contains(destFile, "server") {
+				mu.Lock()
 				libs = append(libs, destFile)
+				mu.Unlock()
 			}
 
 			destFp, err := os.OpenFile(destFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o755)