daveshanley / vacuum

vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and quality analysis tool. Built in go, it tears through API specs faster than you can think. vacuum is compatible with Spectral rulesets and generates compatible reports.
https://quobix.com/vacuum
MIT License
491 stars 39 forks source link

Random crashes for specification with circular references #382

Closed momoson closed 7 months ago

momoson commented 7 months ago

Hi, when trying to lint the following minimal specification, vacuum randomly (not on every run) crashes with a stack overflow error.

Minimal specification:

components:
  schemas:
    a:
      properties:
        id:
          format: int32
          type: integer
        parent:
          $ref: '#/components/schemas/a'
      required:
      - id
      type: object
    b:
      properties:
        equipmentType:
          $ref: '#/components/schemas/a'
        id:
          format: int32
          type: integer
      required:
      - id
      type: object
info:
  title: API
  version: '0.1'
openapi: 3.1.0

vacuum was installed using npm. Version: version: 0.5.5 | compiled: Fri, 01 Dec 2023 23:22:23 UTC

Output when it goes wrong:


██╗   ██╗ █████╗  ██████╗██╗   ██╗██╗   ██╗███╗   ███╗
██║   ██║██╔══██╗██╔════╝██║   ██║██║   ██║████╗ ████║
██║   ██║███████║██║     ██║   ██║██║   ██║██╔████╔██║
╚██╗ ██╔╝██╔══██║██║     ██║   ██║██║   ██║██║╚██╔╝██║
 ╚████╔╝ ██║  ██║╚██████╗╚██████╔╝╚██████╔╝██║ ╚═╝ ██║
  ╚═══╝  ╚═╝  ╚═╝ ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝     ╚═╝

version: 0.5.5 | compiled: Fri, 01 Dec 2023 23:22:23 UTC
🔗 https://quobix.com/vacuum | https://github.com/daveshanley/vacuum

 INFO  Linting file 'minimal.yml' against 42 rules: https://quobix.com/vacuum/rulesets/recommended

runtime: goroutine stack exceeds 1000000000-byte limit
runtime: sp=0xc020700398 stack=[0xc020700000, 0xc040700000]
fatal error: stack overflow

runtime stack:
runtime.throw({0x123b950?, 0x200000008?})
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/panic.go:1077 +0x5c fp=0xc0000a1e18 sp=0xc0000a1de8 pc=0x438c1c
runtime.newstack()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/stack.go:1107 +0x5ac fp=0xc0000a1fc8 sp=0xc0000a1e18 pc=0x4525ac
traceback: unexpected SPWRITE function runtime.morestack
runtime.morestack()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:593 +0x8f fp=0xc0000a1fd0 sp=0xc0000a1fc8 pc=0x4690cf

goroutine 10 [running]:
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e780, 0xc00010e640, 0xc0406ff1d0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:422 +0x2f19 fp=0xc0207003a8 sp=0xc0207003a0 pc=0x748119
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020700820 sp=0xc0207003a8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020700c98 sp=0xc020700820 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020701110 sp=0xc020700c98 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020701588 sp=0xc020701110 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020701a00 sp=0xc020701588 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020701e78 sp=0xc020701a00 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207022f0 sp=0xc020701e78 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020702768 sp=0xc0207022f0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020702be0 sp=0xc020702768 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020703058 sp=0xc020702be0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207034d0 sp=0xc020703058 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020703948 sp=0xc0207034d0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020703dc0 sp=0xc020703948 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020704238 sp=0xc020703dc0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207046b0 sp=0xc020704238 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020704b28 sp=0xc0207046b0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020704fa0 sp=0xc020704b28 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020705418 sp=0xc020704fa0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020705890 sp=0xc020705418 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020705d08 sp=0xc020705890 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020706180 sp=0xc020705d08 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207065f8 sp=0xc020706180 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020706a70 sp=0xc0207065f8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020706ee8 sp=0xc020706a70 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020707360 sp=0xc020706ee8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207077d8 sp=0xc020707360 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020707c50 sp=0xc0207077d8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207080c8 sp=0xc020707c50 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020708540 sp=0xc0207080c8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207089b8 sp=0xc020708540 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020708e30 sp=0xc0207089b8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0207092a8 sp=0xc020708e30 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020709720 sp=0xc0207092a8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc020709b98 sp=0xc020709720 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070a010 sp=0xc020709b98 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070a488 sp=0xc02070a010 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070a900 sp=0xc02070a488 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070ad78 sp=0xc02070a900 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070b1f0 sp=0xc02070ad78 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070b668 sp=0xc02070b1f0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070bae0 sp=0xc02070b668 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070bf58 sp=0xc02070bae0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070c3d0 sp=0xc02070bf58 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070c848 sp=0xc02070c3d0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070ccc0 sp=0xc02070c848 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070d138 sp=0xc02070ccc0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070d5b0 sp=0xc02070d138 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070da28 sp=0xc02070d5b0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc02070dea0 sp=0xc02070da28 pc=0x7453ff
...469198 frames elided...
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f3ba8 sp=0xc0406f3730 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f4020 sp=0xc0406f3ba8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f4498 sp=0xc0406f4020 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f4910 sp=0xc0406f4498 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f4d88 sp=0xc0406f4910 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f5200 sp=0xc0406f4d88 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f5678 sp=0xc0406f5200 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f5af0 sp=0xc0406f5678 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f5f68 sp=0xc0406f5af0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f63e0 sp=0xc0406f5f68 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f6858 sp=0xc0406f63e0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f6cd0 sp=0xc0406f6858 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f7148 sp=0xc0406f6cd0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f75c0 sp=0xc0406f7148 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f7a38 sp=0xc0406f75c0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f7eb0 sp=0xc0406f7a38 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0xc0004e11d0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f8328 sp=0xc0406f7eb0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f87a0 sp=0xc0406f8328 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f8c18 sp=0xc0406f87a0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f9090 sp=0xc0406f8c18 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f9508 sp=0xc0406f9090 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f9980 sp=0xc0406f9508 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406f9df8 sp=0xc0406f9980 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fa270 sp=0xc0406f9df8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fa6e8 sp=0xc0406fa270 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fab60 sp=0xc0406fa6e8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fafd8 sp=0xc0406fab60 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0xc00018a060?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fb450 sp=0xc0406fafd8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fb8c8 sp=0xc0406fb450 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x4f182a?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fbd40 sp=0xc0406fb8c8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fc1b8 sp=0xc0406fbd40 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x80?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fc630 sp=0xc0406fc1b8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0xc00036f2c0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fcaa8 sp=0xc0406fc630 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0xc000130348?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fcf20 sp=0xc0406fcaa8 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x1c50cb0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fd398 sp=0xc0406fcf20 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x120844f?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fd810 sp=0xc0406fd398 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x1?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fdc88 sp=0xc0406fd810 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010eb40, 0x10808e0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fe100 sp=0xc0406fdc88 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010eb40, 0xc00010e640, 0x10808e0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fe578 sp=0xc0406fe100 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e640, 0xc00010e500, 0x10808e0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fe9f0 sp=0xc0406fe578 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).extractRelatives(0xc000536be0, 0xc00044cb40, 0xc00010e500, 0x0, 0x10808e0?, {0xc0001360e8?, 0x1, 0x1}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:436 +0x1ff fp=0xc0406fee68 sp=0xc0406fe9f0 pc=0x7453ff
github.com/pb33f/libopenapi/index.(*Resolver).VisitReference(0xc000536be0, 0xc00044cb40, 0x131c8c0?, {0x0?, 0x1?, 0xc0001ad150?}, 0x1)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:313 +0x12b fp=0xc0406ff0e8 sp=0xc0406fee68 pc=0x74480b
github.com/pb33f/libopenapi/index.visitIndex(0xc000536be0, 0xc000412a00)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:261 +0x136 fp=0xc0406ff438 sp=0xc0406ff0e8 pc=0x7442d6
github.com/pb33f/libopenapi/index.(*Resolver).Resolve(0xc000536be0)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/resolver.go:192 +0x2a fp=0xc0406ff4e0 sp=0xc0406ff438 pc=0x743aaa
github.com/pb33f/libopenapi/index.(*Rolodex).Resolve(0xc0001420d0)
    /home/runner/go/pkg/mod/github.com/pb33f/libopenapi@v0.13.17/index/rolodex.go:389 +0x1aa fp=0xc0406ff600 sp=0xc0406ff4e0 pc=0x74b28a
github.com/daveshanley/vacuum/motor.ApplyRulesToRuleSet(0xc000408b40)
    /home/runner/work/vacuum/vacuum/motor/rule_applicator.go:279 +0x111e fp=0xc0406ffc38 sp=0xc0406ff600 pc=0xb970de
github.com/daveshanley/vacuum/cmd.lintFile({{0x7ffdebc42429, 0xb}, {0x0, 0x0}, 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, ...})
    /home/runner/work/vacuum/vacuum/cmd/lint.go:275 +0x1f4 fp=0xc0406ffdd0 sp=0xc0406ffc38 pc=0x1030ef4
github.com/daveshanley/vacuum/cmd.GetLintCommand.func2.1(0xc000417860?, 0x0, {0x7ffdebc42429, 0xb})
    /home/runner/work/vacuum/vacuum/cmd/lint.go:170 +0x378 fp=0xc0406fffb0 sp=0xc0406ffdd0 pc=0x103afb8
github.com/daveshanley/vacuum/cmd.GetLintCommand.func2.2()
    /home/runner/work/vacuum/vacuum/cmd/lint.go:177 +0x34 fp=0xc0406fffe0 sp=0xc0406fffb0 pc=0x103ac14
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0406fffe8 sp=0xc0406fffe0 pc=0x46ade1
created by github.com/daveshanley/vacuum/cmd.GetLintCommand.func2 in goroutine 1
    /home/runner/work/vacuum/vacuum/cmd/lint.go:141 +0xfc5

goroutine 1 [chan receive]:
runtime.gopark(0xc0004339a8?, 0x410245?, 0xd0?, 0x88?, 0x30?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00049f940 sp=0xc00049f920 pc=0x43ba4e
runtime.chanrecv(0xc0003dd7a0, 0x0, 0x1)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/chan.go:583 +0x3cd fp=0xc00049f9b8 sp=0xc00049f940 pc=0x4099ad
runtime.chanrecv1(0x0?, 0x1276a8f?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/chan.go:442 +0x12 fp=0xc00049f9e0 sp=0xc00049f9b8 pc=0x4095b2
github.com/daveshanley/vacuum/cmd.GetLintCommand.func2(0xc0001a6a00?, {0xc0003c13e0, 0x1, 0x2})
    /home/runner/work/vacuum/vacuum/cmd/lint.go:182 +0x1390 fp=0xc00049fc70 sp=0xc00049f9e0 pc=0x103a810
github.com/spf13/cobra.(*Command).execute(0xc000004600, {0xc0003c13c0, 0x2, 0x2})
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:983 +0xabc fp=0xc00049fe10 sp=0xc00049fc70 pc=0xc496bc
github.com/spf13/cobra.(*Command).ExecuteC(0xc000004300)
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x3ff fp=0xc00049fee8 sp=0xc00049fe10 pc=0xc49f7f
github.com/spf13/cobra.(*Command).Execute(...)
    /home/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/daveshanley/vacuum/cmd.Execute({0x1470418?, 0x19?}, {0x147b700?, 0x1266ec2?}, {0xc0004044a0?, 0xc0000061a0?})
    /home/runner/work/vacuum/vacuum/cmd/root.go:30 +0xae fp=0xc00049ff00 sp=0xc00049fee8 pc=0x1034fce
main.main()
    /home/runner/work/vacuum/vacuum/vacuum.go:25 +0x158 fp=0xc00049ff40 sp=0xc00049ff00 pc=0x103cd18
runtime.main()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:267 +0x2bb fp=0xc00049ffe0 sp=0xc00049ff40 pc=0x43b5fb
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00049ffe8 sp=0xc00049ffe0 pc=0x46ade1

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006efa8 sp=0xc00006ef88 pc=0x43ba4e
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:404
runtime.forcegchelper()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:322 +0xb3 fp=0xc00006efe0 sp=0xc00006efa8 pc=0x43b8d3
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006efe8 sp=0xc00006efe0 pc=0x46ade1
created by runtime.init.6 in goroutine 1
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:310 +0x1a

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006f778 sp=0xc00006f758 pc=0x43ba4e
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:404
runtime.bgsweep(0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgcsweep.go:321 +0xdf fp=0xc00006f7c8 sp=0xc00006f778 pc=0x427c9f
runtime.gcenable.func1()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:200 +0x25 fp=0xc00006f7e0 sp=0xc00006f7c8 pc=0x41ce25
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006f7e8 sp=0xc00006f7e0 pc=0x46ade1
created by runtime.gcenable in goroutine 1
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:200 +0x66

goroutine 4 [GC scavenge wait]:
runtime.gopark(0xc00007e000?, 0x146b830?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006ff70 sp=0xc00006ff50 pc=0x43ba4e
runtime.goparkunlock(...)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:404
runtime.(*scavengerState).park(0x1e29ec0)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgcscavenge.go:425 +0x49 fp=0xc00006ffa0 sp=0xc00006ff70 pc=0x425529
runtime.bgscavenge(0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgcscavenge.go:658 +0x59 fp=0xc00006ffc8 sp=0xc00006ffa0 pc=0x425ad9
runtime.gcenable.func2()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:201 +0x25 fp=0xc00006ffe0 sp=0xc00006ffc8 pc=0x41cdc5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006ffe8 sp=0xc00006ffe0 pc=0x46ade1
created by runtime.gcenable in goroutine 1
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:201 +0xa5

goroutine 5 [finalizer wait]:
runtime.gopark(0x400000?, 0x10006e670?, 0x0?, 0x0?, 0x1e5ba00?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006e628 sp=0xc00006e608 pc=0x43ba4e
runtime.runfinq()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mfinal.go:193 +0x107 fp=0xc00006e7e0 sp=0xc00006e628 pc=0x41bea7
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006e7e8 sp=0xc00006e7e0 pc=0x46ade1
created by runtime.createfing in goroutine 1
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mfinal.go:163 +0x3d

goroutine 14 [GC worker (idle)]:
runtime.gopark(0x2783415663c?, 0x739fec?, 0x80?, 0x67?, 0x1c9?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc000070750 sp=0xc000070730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc0000707e0 sp=0xc000070750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0000707e8 sp=0xc0000707e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 33 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006a750 sp=0xc00006a730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006a7e0 sp=0xc00006a750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006a7e8 sp=0xc00006a7e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 34 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006af50 sp=0xc00006af30 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006afe0 sp=0xc00006af50 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006afe8 sp=0xc00006afe0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 35 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006b750 sp=0xc00006b730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006b7e0 sp=0xc00006b750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006b7e8 sp=0xc00006b7e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 49 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc000508750 sp=0xc000508730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc0005087e0 sp=0xc000508750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0005087e8 sp=0xc0005087e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 50 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc000508f50 sp=0xc000508f30 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc000508fe0 sp=0xc000508f50 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000508fe8 sp=0xc000508fe0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 51 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc000509750 sp=0xc000509730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc0005097e0 sp=0xc000509750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc0005097e8 sp=0xc0005097e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 36 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006bf50 sp=0xc00006bf30 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006bfe0 sp=0xc00006bf50 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006bfe8 sp=0xc00006bfe0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 52 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc000509f50 sp=0xc000509f30 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc000509fe0 sp=0xc000509f50 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc000509fe8 sp=0xc000509fe0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 37 [GC worker (idle)]:
runtime.gopark(0x2783416e004?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00006c750 sp=0xc00006c730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00006c7e0 sp=0xc00006c750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00006c7e8 sp=0xc00006c7e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 53 [GC worker (idle)]:
runtime.gopark(0x2783416bec0?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00050a750 sp=0xc00050a730 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00050a7e0 sp=0xc00050a750 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00050a7e8 sp=0xc00050a7e0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

goroutine 54 [GC worker (idle)]:
runtime.gopark(0x2783416ba54?, 0x0?, 0x0?, 0x0?, 0x0?)
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/proc.go:398 +0xce fp=0xc00050af50 sp=0xc00050af30 pc=0x43ba4e
runtime.gcBgMarkWorker()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1293 +0xe5 fp=0xc00050afe0 sp=0xc00050af50 pc=0x41e9a5
runtime.goexit()
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0xc00050afe8 sp=0xc00050afe0 pc=0x46ade1
created by runtime.gcBgMarkStartWorkers in goroutine 17
    /opt/hostedtoolcache/go/1.21.4/x64/src/runtime/mgc.go:1217 +0x1c

Output when it runs through:

██╗   ██╗ █████╗  ██████╗██╗   ██╗██╗   ██╗███╗   ███╗
██║   ██║██╔══██╗██╔════╝██║   ██║██║   ██║████╗ ████║
██║   ██║███████║██║     ██║   ██║██║   ██║██╔████╔██║
╚██╗ ██╔╝██╔══██║██║     ██║   ██║██║   ██║██║╚██╔╝██║
 ╚████╔╝ ██║  ██║╚██████╗╚██████╔╝╚██████╔╝██║ ╚═╝ ██║
  ╚═══╝  ╚═╝  ╚═╝ ╚═════╝ ╚═════╝  ╚═════╝ ╚═╝     ╚═╝

version: 0.5.5 | compiled: Fri, 01 Dec 2023 23:22:23 UTC
🔗 https://quobix.com/vacuum | https://github.com/daveshanley/vacuum

 INFO  Linting file 'minimal.yml' against 42 rules: https://quobix.com/vacuum/rulesets/recommended

/home/momo/ahjo/openapi-spec/minimal.yml
----------------------------------------
Location         | Severity | Message                                                             | Rule                      | Category             | Path
minimal.yml:1:1  | error    | No servers defined for the specification                            | oas3-api-servers          | Validation           | $.servers
minimal.yml:4:7  | warning  | Component `a` of type `schemas` is missing a description            | component-description     | Descriptions         | $.components.schemas.a
minimal.yml:5:9  | warning  | Missing example for `id` on component `a`                           | oas3-valid-schema-example | Examples             | $.components.schemas.a.id
minimal.yml:14:7 | warning  | Component `b` of type `schemas` is missing a description            | component-description     | Descriptions         | $.components.schemas.b
minimal.yml:14:7 | warning  | `#/components/schemas/b` is potentially unused or has been orphaned | oas3-unused-component     | Schemas              | $.components.schemas.b
minimal.yml:17:9 | warning  | Missing example for `id` on component `b`                           | oas3-valid-schema-example | Examples             | $.components.schemas.b.id
minimal.yml:24:3 | error    | Info section is missing a description: `description` must be set    | info-description          | Contract Information | $.info

Category             | Errors | Warnings | Info
Contract Information | 1      | 0        | 0
Schemas              | 0      | 1        | 0
Validation           | 1      | 0        | 0
Descriptions         | 0      | 2        | 0
Examples             | 0      | 2        | 0

          Linting file 'minimal.yml' failed with 2 errors, 5 warnings and 0 informs          

Error: failed with 2 errors

When removing the schema b, vacuum runs through smoothly on every call.

daveshanley commented 7 months ago

Thank you for reporting this. I saw this explosion in the online version also. I have updated vacuum to v0.5.6. I have tried your sample spec and I cannot re-create the issue anymore.

daveshanley commented 7 months ago

There is still a bug in the fact that the circle is not being caught for some reason, however it won't explode the app anymore. I will work on discovering why this circle is not picked up. All circular tests are passing in the stack, so this is interesting.

daveshanley commented 7 months ago

The issue was resolved in v0.5.6 however in v0.5.7 vacuum will report on the circular references reported here.

Screenshot 2023-12-03 at 11 18 29 AM
daveshanley commented 7 months ago

This behavior should be back to normal in v0.5.8

momoson commented 7 months ago

Thank you very much for resolving this so quickly. I updated to v0.5.9 and indeed the problem disappeared. -> Closing this issue