Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

skaffold dev causes a panic #8949

Closed
paulgrav opened this issue Jul 14, 2023 · 2 comments · Fixed by #9159
Closed

skaffold dev causes a panic #8949

paulgrav opened this issue Jul 14, 2023 · 2 comments · Fixed by #9159

Comments

@paulgrav
Copy link

Expected behavior

Build succeeds and deploy succeeds. No panic.

Actual behavior

Build succeeds, but deploy causes skaffold panic

Information

  • Skaffold version: v2.6.1
  • Operating system: macOS 13.4.1 (22F82)
  • Installed via: Homebrew
  • Contents of skaffold.yaml:
apiVersion: skaffold/v4beta6
kind: Config
metadata:
  name: REDACTED
build:
  artifacts:
    - image: REDACTED
      context: .
      buildpacks:
        builder: paketobuildpacks/builder:tiny
manifests:
  kustomize:
    paths:
      - skaffold/k8s/overlay/dev
deploy:
  docker:
    images:
      - REDACTED
test:
  - image: REDACTED
    custom:
      - command: |-
          skaffold/install-trivy.sh
          trivy image -q --severity HIGH --ignore-unfixed $IMAGE
      - command: |-
          skaffold/install-trivy.sh
          trivy image -q --severity CRITICAL --ignore-unfixed --exit-code=1 $IMAGE

profiles:
  - name: nonprod
    manifests:
      kustomize:
       paths:
         - skaffold/k8s/overlay/nonprod
    deploy:
      kubectl:
        defaultNamespace: akamai-datastream-telemetry
        hooks: &hooks
          before:
            - host:
                command:
                  - "sh"
                  - -c
                  - |
                    chmod +x skaffold/create-gcp-serviceaccount.sh
                    GCP_PROJECT=REDACTED skaffold/create-gcp-serviceaccount.sh
                os: [darwin, linux]
          after: &listkservice
            - host:
                command:
                  - sh
                  - -c
                  - |
                    for i in $SKAFFOLD_NAMESPACES; do kubectl get kservice/REDACTED -n $i; done

  - name: prod
    manifests:
      kustomize:
       paths:
         - skaffold/k8s/overlay/prod
    deploy:
      kubectl:
        hooks:
          before:
            - host:
                command:
                  - "sh"
                  - -c
                  - |
                    chmod +x skaffold/create-gcp-serviceaccount.sh
                    GCP_PROJECT= REDACTED skaffold/create-gcp-serviceaccount.sh
                os: [darwin, linux]
          after: *listkservice

  - name: test
    activation:
      - command: deploy
    manifests:
      kustomize:
       paths:
         - skaffold/k8s/overlay/test
    deploy:
      kubectl:
        defaultNamespace: XXX
        hooks:
          <<: *hooks

Steps to reproduce the behavior

  1. skaffold dev
They are tagged and referenced by a unique, local only, tag instead.
See https://skaffold.dev/docs/pipeline-stages/taggers/#how-tagging-works  subtask=-1 task=Deploy
Starting deploy...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x104ccab3c]

goroutine 1 [running]:
github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/docker/logger.(*Logger).Stop(0x1400014e400)
        /private/tmp/skaffold-20230705-4219-jq79ds/pkg/skaffold/docker/logger/log.go:176 +0x2c
github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/log.LoggerMux.Stop({0x140004dfd00, 0x1, 0x1})
        /private/tmp/skaffold-20230705-4219-jq79ds/pkg/skaffold/log/logger_mux.go:40 +0x80
github.com/GoogleContainerTools/skaffold/v2/pkg/skaffold/runner.(*SkaffoldRunner).Dev(0x14000abcc40, {0x106602270, 0x140003c5340}, {0x1065dda60, 0x14000a13450}, {0x14000a2e040, 0x1, 0x1})
        /private/tmp/skaffold-20230705-4219-jq79ds/pkg/skaffold/runner/dev.go:307 +0x1070
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app/cmd.runDev.func5({0x106610420, 0x14000abcc40}, {0x14000c583f0, 0x1, 0x1})
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/cmd/dev.go:71 +0x224
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app/cmd.withRunner({0x106602270, 0x140003c5340}, {0x1065dda60, 0x14000a13450}, 0x14000d9d3d0)
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/cmd/runner.go:54 +0x180
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app/cmd.runDev({0x106602270, 0x140003c5340}, {0x1065dda60, 0x14000a13450})
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/cmd/dev.go:66 +0x25c
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app/cmd.(*builder).NoArgs.func1(0x0, {0x0, 0x0, 0x0})
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/cmd/commands.go:138 +0x90
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app/cmd.applyPostRunHooks.func1(0x14000243200, {0x14000a7e000, 0x0, 0x1})
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/cmd/commands.go:185 +0x58
github.com/spf13/cobra.(*Command).execute(0x14000243200, {0x14000a69fe0, 0x1, 0x1})
        /private/tmp/skaffold-20230705-4219-jq79ds/vendor/github.com/spf13/cobra/command.go:940 +0x90c
github.com/spf13/cobra.(*Command).ExecuteC(0x14000242900)
        /private/tmp/skaffold-20230705-4219-jq79ds/vendor/github.com/spf13/cobra/command.go:1068 +0x758
github.com/spf13/cobra.(*Command).ExecuteContextC(0x14000242900, {0x106602270, 0x140003c5340})
        /private/tmp/skaffold-20230705-4219-jq79ds/vendor/github.com/spf13/cobra/command.go:1001 +0x78
github.com/GoogleContainerTools/skaffold/v2/cmd/skaffold/app.Run({0x1065dc840, 0x140001ae008}, {0x1065dc840, 0x140001ae010})
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/app/skaffold.go:51 +0x498
main.main()
        /private/tmp/skaffold-20230705-4219-jq79ds/cmd/skaffold/skaffold.go:49 +0x244

Note that I’m using OrbStack and skaffold doesn’t seem to be aware of my docker context, so I have to manually set DOCKER_HOST via export DOCKER_HOST=$(docker context ls --format json | grep 'Current":true' | jq -r '.DockerEndpoint'). My DOCKER_HOST is set to unix:///Users/gravepa/.orbstack/run/docker.sock

@mboulton-fathom
Copy link
Contributor

I've submitted a PR to fix the panic, but for me the root problem was that I named my images like

build:
  artifacts:
    - image: example.com/repo/imagename

which gave the error

creating container in local docker: Error response from daemon: Invalid container name (example.com/repo/imagename), only [a-zA-Z0-9][a-zA-Z0-9_.-] are allowed

This builds fine but fails when you do skaffold run/etc

@morsok
Copy link

morsok commented Nov 12, 2023

I also have the same segmentation fault when trying to use scaffold dev to deploy to docker with docker-compose (I use docker-compose to try to bind volumes).

Even running with verbosity to trace I have no idea what's happening, there's no log not even a trace log from docker, it segfaults directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants