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

SIGSEGV when root identifier for a workflow does not match an object in the schema #157

Open
dustinblack opened this issue Mar 1, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@dustinblack
Copy link
Member

Describe the bug

If the root reference in a workflow schema does not match an object ID, a SIGSEGV panic is emitted.

$ arcaflow -config config.yaml -input input.yaml -context .
2024-03-01T13:03:55+01:00	debug	source=deployer	Checking whether image exists with command [/usr/bin/podman image ls --format {{.Repository}}:{{.Tag}}]
2024-03-01T13:03:57+01:00	debug	source=deployer	quay.io/arcalot/arcaflow-plugin-example:0.5.0: image already present skipping pull
2024-03-01T13:03:57+01:00	debug	source=deployer	Deploying with command [/usr/bin/podman run -i -a stdin -a stdout -a stderr --name arcaflow_podman_QNODKTZxeD quay.io/arcalot/arcaflow-plugin-example:0.5.0 --atp]
2024-03-01T13:03:57+01:00	debug	source=plugin-provider	Reading plugin schema...
2024-03-01T13:03:57+01:00	debug	source=plugin-provider	Hello message read, ATP version 3.
2024-03-01T13:03:57+01:00	debug	source=plugin-provider	Schema unserialization complete.
2024-03-01T13:03:57+01:00	debug	source=deployer	Killing with command [/usr/bin/podman kill arcaflow_podman_QNODKTZxeD]
2024-03-01T13:03:57+01:00	warning	source=deployer	failed to kill pod arcaflow_podman_QNODKTZxeD, probably the execution terminated earlier
2024-03-01T13:03:57+01:00	debug	source=deployer	Removing container with command [/usr/bin/podman rm --force arcaflow_podman_QNODKTZxeD]
2024-03-01T13:03:57+01:00	info	source=deployer	successfully removed container arcaflow_podman_QNODKTZxeD
2024-03-01T13:03:57+01:00	info	source=deployer	stdin pipe successfully closed
2024-03-01T13:03:57+01:00	info	source=deployer	stdout pipe successfully closed
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x152d08]

goroutine 1 [running]:
go.flow.arcalot.io/pluginsdk/schema.(*ScopeSchema).Properties(0xfffea6ae6358?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/pluginsdk@v0.5.1/schema/scope.go:63 +0x38
go.flow.arcalot.io/expressions.dependenciesBracketKey({0x1630bb0, 0x400046aae0}, {0x10b6400?, 0x4000014150}, 0x40004cd410)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression_dependencies.go:231 +0x6c0
go.flow.arcalot.io/expressions.(*dependencyContext).identifierDependencies(0x400083ed28?, 0x400016c6a0?, {0x1630bb0, 0x400046aae0}, 0xfffea6f23800?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression_dependencies.go:170 +0x8c
go.flow.arcalot.io/expressions.(*dependencyContext).dependencies(0x40004cd3e0?, {0x1623120?, 0x40001534e0?}, {0x1630bb0?, 0x400046aae0?}, 0xfffea6dae068?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression_dependencies.go:41 +0xf8
go.flow.arcalot.io/expressions.(*dependencyContext).dotNotationDependencies(0x0?, 0x400016c6c0, {0x1630bb0?, 0x400063f170?}, 0x28?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression_dependencies.go:62 +0x90
go.flow.arcalot.io/expressions.(*dependencyContext).dependencies(0x4000648000?, {0x16230f0?, 0x400016c6c0?}, {0x1630bb0?, 0x400063f170?}, 0x1375f9d?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression_dependencies.go:34 +0x78
go.flow.arcalot.io/expressions.expression.Dependencies({{0x40009003e0?, 0x15?}, {0x16230f0?, 0x400016c6c0?}}, {0x1630bb0, 0x400063f170}, 0x40008d2a80)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/expressions@v0.2.1/expression.go:78 +0xa4
go.flow.arcalot.io/engine/workflow.(*executor).prepareDependencies(0x112cdc0?, 0x40000140d0?, {0x11cc4e0, 0x400016c760}, {0x1631300, 0x40004ccbd0}, 0x400083f0c8?, {0x16306b0, 0x400016dac0})
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/workflow/executor.go:795 +0x3cc
go.flow.arcalot.io/engine/workflow.(*executor).prepareDependencies(0x112cdc0?, 0x4000014010?, {0x11511c0, 0x4000904db0}, {0x1631300, 0x40004ccbd0}, 0x400083f2c8?, {0x16306b0, 0x400016dac0})
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/workflow/executor.go:859 +0xb90
go.flow.arcalot.io/engine/workflow.(*executor).prepareDependencies(0x11511c0?, 0x40004cd380?, {0x11511c0, 0x4000904d80}, {0x1631300, 0x40004ccbd0}, 0x11531a0?, {0x16306b0, 0x400016dac0})
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/workflow/executor.go:859 +0xb90
go.flow.arcalot.io/engine/workflow.(*executor).connectStepDependencies(0x4000904ed0?, 0x16347d0?, 0x400046aae0?, 0x400016dac0?, {0x16306b0, 0x400016dac0?}, 0x1154c40?)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/workflow/executor.go:320 +0x57c
go.flow.arcalot.io/engine/workflow.(*executor).Prepare(0x4000904ed0, 0x40005460a0, 0x40008d2a80)
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/workflow/executor.go:120 +0x218
go.flow.arcalot.io/engine.workflowEngine.Parse({{0x162fbc0, 0x40008d2ab0}, {0x162e8f8, 0x40005938f0}, 0x4000490180}, 0x4eedc?, {0x400048e320?, 0xfceed4?})
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/engine.go:107 +0x170
main.runWorkflow({0x161e290, 0x40008d32f0}, 0x13786d5?, {0x400048e320, 0x48}, {0x162fbc0?, 0x40008d2a20}, {0x4000296800, 0x11, 0x200})
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/cmd/arcaflow/main.go:204 +0x1a8
main.main()
	/home/runner/go/pkg/mod/go.flow.arcalot.io/engine@v0.9.1/cmd/arcaflow/main.go:190 +0xd04

To reproduce

Simply reproduced with any workflow:

version: v0.2.0
input:
  root: BadObjectName
  objects:
    RootObject:
      id: RootObject
      properties:
        nickname:
          display:
            description: Just a name
            name: Name
          required: true
          type:
            type_id: string

steps: 
  example:
    plugin:
      deployment_type: image
      src: quay.io/arcalot/arcaflow-plugin-example:0.5.0
    input:
      name:
        _type: nickname
        nick: !expr $.input.nickname

outputs:
 success:
   example: !expr $.steps.example.outputs.success
@dustinblack dustinblack added the bug Something isn't working label Mar 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant