woodpecker-ci / woodpecker

Woodpecker is a simple, yet powerful CI/CD engine with great extensibility.
https://woodpecker-ci.org
Apache License 2.0
4.18k stars 360 forks source link

Runtime error with latest Docker image #577

Closed samuel-p closed 2 years ago

samuel-p commented 2 years ago

Component

server

Describe the bug

With the latest Docker image I get an runtime error after the agent connects to the server:

...
woodpecker_1        | [GIN-debug] POST   /api/hook                 --> github.com/woodpecker-ci/woodpecker/server/api.PostHook (12 handlers)
woodpecker_1        | [GIN-debug] GET    /stream/events            --> github.com/woodpecker-ci/woodpecker/server/api.EventStreamSSE (12 handlers)
woodpecker_1        | [GIN-debug] GET    /stream/logs/:owner/:name/:build/:number --> github.com/woodpecker-ci/woodpecker/server/api.LogStreamSSE (15 handlers)
woodpecker_1        | {"level":"debug","time":"2021-12-08T11:36:14Z","message":"agent connected: agent: polling"}
woodpecker_1        | panic: runtime error: invalid memory address or nil pointer dereference
woodpecker_1        | [signal SIGSEGV: segmentation violation code=0x1 addr=0xa0 pc=0x9cec57]
woodpecker_1        | 
woodpecker_1        | goroutine 50 [running]:
woodpecker_1        | github.com/woodpecker-ci/woodpecker/server/model.Tree(0xc00020e680, 0x4, 0x32, 0x4, 0x32, 0x0)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/server/model/proc.go:74 +0x117
woodpecker_1        | github.com/woodpecker-ci/woodpecker/server/grpc.(*RPC).Update(0xc0002d01c0, 0x13d6018, 0xc000242030, 0xc0003bb99c, 0x4, 0xc0003bba78, 0x5, 0x0, 0x0, 0x61b095a1, ...)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/server/grpc/rpc.go:144 +0x88b
woodpecker_1        | github.com/woodpecker-ci/woodpecker/server/grpc.(*WoodpeckerServer).Update(0xc0002d01c0, 0x13d6018, 0xc000242030, 0xc0003bd4c0, 0xc0002d01c0, 0xc000230378, 0xc000242780)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/server/grpc/rpc.go:567 +0x1ff
woodpecker_1        | github.com/woodpecker-ci/woodpecker/pipeline/rpc/proto._Woodpecker_Update_Handler.func1(0x13d6018, 0xc000242030, 0x11303a0, 0xc0003bd4c0, 0x0, 0x203000, 0x7f914451be60, 0x18)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/pipeline/rpc/proto/woodpecker_grpc.pb.go:274 +0x89
woodpecker_1        | main.(*authorizer).unaryIntercaptor(0xc0001a0cf0, 0x13d6018, 0xc000242030, 0x11303a0, 0xc0003bd4c0, 0xc0003c0ac0, 0xc00021a990, 0x18, 0x10d6e00, 0xc000242001, ...)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/cmd/server/server.go:313 +0xb0
woodpecker_1        | github.com/woodpecker-ci/woodpecker/pipeline/rpc/proto._Woodpecker_Update_Handler(0x114ab40, 0xc0002d01c0, 0x13d6018, 0xc000242030, 0xc000202840, 0xc0001a0d20, 0x13d6018, 0xc000242030, 0xc0004fce20, 0x1b)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/pipeline/rpc/proto/woodpecker_grpc.pb.go:276 +0x150
woodpecker_1        | google.golang.org/grpc.(*Server).processUnaryRPC(0xc0001ec8c0, 0x13dfcd8, 0xc00008b800, 0xc00036e900, 0xc0000e94a0, 0x19d4af8, 0x0, 0x0, 0x0)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/vendor/google.golang.org/grpc/server.go:1279 +0x52b
woodpecker_1        | google.golang.org/grpc.(*Server).handleStream(0xc0001ec8c0, 0x13dfcd8, 0xc00008b800, 0xc00036e900, 0x0)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/vendor/google.golang.org/grpc/server.go:1608 +0xd0c
woodpecker_1        | google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc0003bb8a0, 0xc0001ec8c0, 0x13dfcd8, 0xc00008b800, 0xc00036e900)
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/vendor/google.golang.org/grpc/server.go:923 +0xab
woodpecker_1        | created by google.golang.org/grpc.(*Server).serveStreams.func1
woodpecker_1        |   /woodpecker/src/github.com/woodpecker-ci/woodpecker/vendor/google.golang.org/grpc/server.go:921 +0x1fd

System Info

Version

{"source":"https://github.com/woodpecker-ci/woodpecker","version":"next-4642d98f"}

Config

services:
  database:
    image: postgres:13-alpine
    restart: always
    environment:
      - POSTGRES_USER=...
      - POSTGRES_PASSWORD=...
      - POSTGRES_DB=...
    volumes:
      - ./database:/var/lib/postgresql/data

  woodpecker:
    image: woodpeckerci/woodpecker-server
    restart: always
    ports:
      - 127.0.0.1:8000:8000
    command: --log-level=trace
    volumes:
      - ./woodpecker:/var/lib/woodpecker/
    depends_on:
      - database
    environment:
      - WOODPECKER_OPEN=true
      - WOODPECKER_HOST=https://ci.sp-codes.de
      - WOODPECKER_DATABASE_DRIVER=postgres
      - WOODPECKER_DATABASE_DATASOURCE=postgres://...:...@database/...?sslmode=disable
      - WOODPECKER_GITEA=true
      - WOODPECKER_GITEA_URL=https://git.sp-codes.de
      - WOODPECKER_GITEA_CLIENT=...
      - WOODPECKER_GITEA_SECRET=...
      - WOODPECKER_AGENT_SECRET=...
      - WOODPECKER_ADMIN=...

Additional context

No response

Validations

6543 commented 2 years ago

It's likely a corrupt entry in database.

the cause of this I'm not aware of ... but I'll created a pull to least report back instead of panic -> #582

6543 commented 2 years ago

just guessing: PS: you have to stop not kill the agent or else it wont have time to report back new state of running tasks PS: PS: if server is already down before the agent ... it has a similar effect ... we are of it and looking for solutions