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

Exit handler nil pointer crash when failed step misses output parameter #13445

Closed
3 of 4 tasks
bmjhversteeg opened this issue Aug 9, 2024 · 1 comment · Fixed by #13448
Closed
3 of 4 tasks

Exit handler nil pointer crash when failed step misses output parameter #13445

bmjhversteeg opened this issue Aug 9, 2024 · 1 comment · Fixed by #13448
Labels
area/exit-handler area/hooks P2 Important. All bugs with >=3 thumbs up that aren’t P0 or P1, plus: Any other bugs deemed important type/bug

Comments

@bmjhversteeg
Copy link

bmjhversteeg commented Aug 9, 2024

Pre-requisites

  • I have double-checked my configuration
  • I have tested with the :latest image tag (i.e. quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on :latest. If not, I have explained why, in detail, in my description below.
  • I have searched existing issues and could not find a match for this bug
  • I'd like to contribute the fix myself (see contributing guide)

What happened? What did you expect to happen?

When an exit handler is called on a failed step that has an output parameter which is null/empty (because the step crashed before creating the output file used in valueFrom), the exit handler fails with the message: runtime error: invalid memory address or nil pointer dereference. Seems similar to #12288 but in this case, the output params assumed to be always present.

Originally tested on v3.5.5 but also present in 3.5.10

Version(s)

v3.5.5, v3.5.10

Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflows that uses private images.

metadata:
  name: exit-handler-bug
spec:
  entrypoint: failure-workflow
  templates:
    - name: failure-workflow
      steps:
        - - name: step1
            template: intentional-fail
            hooks:
              exit:
                template: lifecycle-hook
                arguments:
                  parameters:
                    - name: step-status
                      value: '{{steps.step1.status}}'
    - name: intentional-fail
      outputs:
        parameters:
          - name: hello-param
            valueFrom:
              path: /tmp/hello_world.txt
      container:
        image: alpine:latest
        command: ["sh", "-c"]
        args: ["echo intentional failure; exit 1"]
    - name: lifecycle-hook
      inputs:
        parameters:
          - name: step-status
      http:
        url: 'http://localhost:80/{{inputs.parameters.step-status}}'

Logs from the workflow controller

time="2024-08-09T08:45:01.126Z" level=info msg="Processing workflow" Phase= ResourceVersion=258701967 namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.131Z" level=info msg="resolved artifact repository" artifactRepositoryRef=default-artifact-repository
time="2024-08-09T08:45:01.131Z" level=info msg="Task-result reconciliation" namespace=workflows numObjs=0 workflow=exit-handler-bug
time="2024-08-09T08:45:01.131Z" level=info msg="Updated phase  -> Running" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.131Z" level=warning msg="Node was nil, will be initialized as type Skipped" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.132Z" level=info msg="was unable to obtain node for , letting display name to be nodeName" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.132Z" level=info msg="Steps node exit-handler-bug initialized Running" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.132Z" level=info msg="StepGroup node exit-handler-bug-3373743507 initialized Running" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.132Z" level=warning msg="Node was nil, will be initialized as type Skipped" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.132Z" level=info msg="Pod node exit-handler-bug-2010843852 initialized Pending" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.158Z" level=info msg="Created pod: exit-handler-bug[0].step1 (exit-handler-bug-intentional-fail-2010843852)" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.158Z" level=info msg="Workflow step group node exit-handler-bug-3373743507 not yet completed" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.158Z" level=info msg="TaskSet Reconciliation" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.158Z" level=info msg=reconcileAgentPod namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:01.159Z" level=info msg="Workflow to be dehydrated" Workflow Size=1816
time="2024-08-09T08:45:01.170Z" level=info msg="Workflow update successful" namespace=workflows phase=Running resourceVersion=258701971 workflow=exit-handler-bug
time="2024-08-09T08:45:11.160Z" level=info msg="Processing workflow" Phase=Running ResourceVersion=258701971 namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.160Z" level=info msg="Task-result reconciliation" namespace=workflows numObjs=1 workflow=exit-handler-bug
time="2024-08-09T08:45:11.160Z" level=info msg="task-result changed" namespace=workflows nodeID=exit-handler-bug-2010843852 workflow=exit-handler-bug
time="2024-08-09T08:45:11.160Z" level=info msg="Pod failed: Error (exit code 1)" displayName=step1 namespace=workflows pod=exit-handler-bug-intentional-fail-2010843852 templateName=intentional-fail workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=info msg="node changed" namespace=workflows new.message="Error (exit code 1)" new.phase=Failed new.progress=0/1 nodeID=exit-handler-bug-2010843852 old.message= old.phase=Pending old.progress=0/1 workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=info msg="Running OnExit handler" lifeCycleHook="&LifecycleHook{Template:lifecycle-hook,Arguments:Arguments{Parameters:[]Parameter{Parameter{Name:step-status,Default:nil,Value:*{{steps.step1.status}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},},TemplateRef:nil,Expression:,}" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=error msg="Recovered from panic" namespace=workflows r="runtime error: invalid memory address or nil pointer dereference" stack="goroutine 283 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x5e\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate.func2()\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:200 +0xb4\npanic({0x20c5ea0?, 0x39ef3f0?})\n\t/usr/local/go/src/runtime/panic.go:920 +0x270\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).resolveExitTmplArgument(0xc0007e6300, {{0xc00739ec00, 0x1, 0x1}, {0x0, 0x0, 0x0}}, {0xc017475ad0, 0xb}, 0xc016ff58c0, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:60 +0xa89\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).runOnExitNode(0xc0007e6300, {0x27be158, 0x3a5b2c0}, 0xc00739eba0, 0xc00082cf00, {0xc0174751d0, 0x10}, 0x10?, {0xc017475ad0, 0xb}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:36 +0x445\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeStepGroup(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc0007e6d80, 0x1, 0x1}, {0xc010ce35c0, 0x13}, 0xc0008678e8)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:330 +0x1445\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeSteps(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, 0xc016ff5b40, {0xc010ce34a0, 0x16}, 0xc003e59680, {0x27c1a60, ...}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:108 +0x7ea\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeTemplate(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, {0x27c1a60, 0xc0007e6a80?}, 0x454c49465f4e454b?, {{0x0, 0x0, ...}, ...}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:2142 +0x2e36\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate(0xc0007e6300, {0x27be158?, 0x3a5b2c0})\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:370 +0x18cb\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).processNextItem(0xc000222000, {0x27be158, 0x3a5b2c0})\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:811 +0x627\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).runWorker(0xc00ee24ea0?)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:734 +0x88\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1(0x30?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:155 +0x33\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil(0x0?, {0x2796540, 0xc00f2cce40}, 0x1, 0xc0006fede0)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:156 +0xaf\nk8s.io/apimachinery/pkg/util/wait.JitterUntil(0x0?, 0x3b9aca00, 0x0, 0x0?, 0x0?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:133 +0x7f\nk8s.io/apimachinery/pkg/util/wait.Until(0x0?, 0x0?, 0x0?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:90 +0x1e\ncreated by github.com/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).Run in goroutine 28\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:344 +0x1885\n" workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=info msg="Updated phase Running -> Error" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=info msg="Updated message  -> runtime error: invalid memory address or nil pointer dereference" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.161Z" level=info msg="Marking workflow completed" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.162Z" level=info msg="Marking workflow as pending archiving" namespace=workflows workflow=exit-handler-bug
time="2024-08-09T08:45:11.162Z" level=info msg="Workflow to be dehydrated" Workflow Size=2622
time="2024-08-09T08:45:11.167Z" level=info msg="cleaning up pod" action=deletePod key=workflows/exit-handler-bug-1340600742-agent/deletePod
time="2024-08-09T08:45:11.172Z" level=info msg="Workflow update successful" namespace=workflows phase=Error resourceVersion=258702051 workflow=exit-handler-bug
time="2024-08-09T08:45:11.181Z" level=info msg="archiving workflow" namespace=workflows uid=bf8ba3a8-9c7a-4a3a-83b5-a02ced40f10e workflow=exit-handler-bug
time="2024-08-09T08:45:11.205Z" level=info msg="Queueing Error workflow workflows/exit-handler-bug for delete in 1h0m0s due to TTL"
time="2024-08-09T08:45:16.181Z" level=info msg="cleaning up pod" action=deletePod key=workflows/exit-handler-bug-intentional-fail-2010843852/deletePod

Logs from in your workflow's wait container

-
@bmjhversteeg bmjhversteeg changed the title Exit handler crashes when failed step has misses output parameter Exit handler crashes when failed step misses output parameter Aug 9, 2024
@agilgur5 agilgur5 changed the title Exit handler crashes when failed step misses output parameter Exit handler crash due to nil pointer when failed step misses output parameter Aug 9, 2024
@agilgur5
Copy link
Member

agilgur5 commented Aug 9, 2024

For other readers, there's a stack trace within the logs:

time="2024-08-09T08:45:11.161Z" level=error msg="Recovered from panic" namespace=workflows r="runtime error: invalid memory address or nil pointer dereference" stack="goroutine 283 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x5e\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate.func2()\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:200 +0xb4\npanic({0x20c5ea0?, 0x39ef3f0?})\n\t/usr/local/go/src/runtime/panic.go:920 +0x270\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).resolveExitTmplArgument(0xc0007e6300, {{0xc00739ec00, 0x1, 0x1}, {0x0, 0x0, 0x0}}, {0xc017475ad0, 0xb}, 0xc016ff58c0, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:60 +0xa89\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).runOnExitNode(0xc0007e6300, {0x27be158, 0x3a5b2c0}, 0xc00739eba0, 0xc00082cf00, {0xc0174751d0, 0x10}, 0x10?, {0xc017475ad0, 0xb}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:36 +0x445\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeStepGroup(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc0007e6d80, 0x1, 0x1}, {0xc010ce35c0, 0x13}, 0xc0008678e8)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:330 +0x1445\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeSteps(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, 0xc016ff5b40, {0xc010ce34a0, 0x16}, 0xc003e59680, {0x27c1a60, ...}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:108 +0x7ea\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeTemplate(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, {0x27c1a60, 0xc0007e6a80?}, 0x454c49465f4e454b?, {{0x0, 0x0, ...}, ...}, ...)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:2142 +0x2e36\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate(0xc0007e6300, {0x27be158?, 0x3a5b2c0})\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:370 +0x18cb\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).processNextItem(0xc000222000, {0x27be158, 0x3a5b2c0})\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:811 +0x627\ngitpro.ttaallkk.top/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).runWorker(0xc00ee24ea0?)\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:734 +0x88\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1(0x30?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:155 +0x33\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil(0x0?, {0x2796540, 0xc00f2cce40}, 0x1, 0xc0006fede0)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:156 +0xaf\nk8s.io/apimachinery/pkg/util/wait.JitterUntil(0x0?, 0x3b9aca00, 0x0, 0x0?, 0x0?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:133 +0x7f\nk8s.io/apimachinery/pkg/util/wait.Until(0x0?, 0x0?, 0x0?)\n\t/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:90 +0x1e\ncreated by github.com/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).Run in goroutine 28\n\t/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:344 +0x1885\n" workflow=exit-handler-bug

I'll reformat that if I get a chance. EDIT: reformatted below:

time="2024-08-09T08:45:11.161Z" level=error msg="Recovered from panic" namespace=workflows r="runtime error: invalid memory address or nil pointer dereference" stack="goroutine 283 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:24 +0x5e
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate.func2()
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:200 +0xb4
panic({0x20c5ea0?, 0x39ef3f0?})
	/usr/local/go/src/runtime/panic.go:920 +0x270
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).resolveExitTmplArgument(0xc0007e6300, {{0xc00739ec00, 0x1, 0x1}, {0x0, 0x0, 0x0}}, {0xc017475ad0, 0xb}, 0xc016ff58c0, ...)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:60 +0xa89
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).runOnExitNode(0xc0007e6300, {0x27be158, 0x3a5b2c0}, 0xc00739eba0, 0xc00082cf00, {0xc0174751d0, 0x10}, 0x10?, {0xc017475ad0, 0xb}, ...)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/exit_handler.go:36 +0x445
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeStepGroup(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc0007e6d80, 0x1, 0x1}, {0xc010ce35c0, 0x13}, 0xc0008678e8)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:330 +0x1445
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeSteps(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, 0xc016ff5b40, {0xc010ce34a0, 0x16}, 0xc003e59680, {0x27c1a60, ...}, ...)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/steps.go:108 +0x7ea
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).executeTemplate(0xc0007e6300, {0x27be158, 0x3a5b2c0}, {0xc017474f00, 0x10}, {0x27c1a60, 0xc0007e6a80?}, 0x454c49465f4e454b?, {{0x0, 0x0, ...}, ...}, ...)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:2142 +0x2e36
github.com/argoproj/argo-workflows/v3/workflow/controller.(*wfOperationCtx).operate(0xc0007e6300, {0x27be158?, 0x3a5b2c0})
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/operator.go:370 +0x18cb
github.com/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).processNextItem(0xc000222000, {0x27be158, 0x3a5b2c0})
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:811 +0x627
github.com/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).runWorker(0xc00ee24ea0?)
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:734 +0x88
k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1(0x30?)
	/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:155 +0x33
k8s.io/apimachinery/pkg/util/wait.BackoffUntil(0x0?, {0x2796540, 0xc00f2cce40}, 0x1, 0xc0006fede0)
	/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:156 +0xaf
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0x0?, 0x3b9aca00, 0x0, 0x0?, 0x0?)
	/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:133 +0x7f
k8s.io/apimachinery/pkg/util/wait.Until(0x0?, 0x0?, 0x0?)
	/go/pkg/mod/k8s.io/apimachinery@v0.24.3/pkg/util/wait/wait.go:90 +0x1e
created by github.com/argoproj/argo-workflows/v3/workflow/controller.(*WorkflowController).Run in goroutine 28
	/go/src/github.com/argoproj/argo-workflows/workflow/controller/controller.go:344 +0x1885
" workflow=exit-handler-bug

@agilgur5 agilgur5 changed the title Exit handler crash due to nil pointer when failed step misses output parameter Exit handler nil pointer crash when failed step misses output parameter Aug 9, 2024
@miltalex miltalex self-assigned this Aug 9, 2024
@miltalex miltalex removed their assignment Aug 9, 2024
@agilgur5 agilgur5 added P2 Important. All bugs with >=3 thumbs up that aren’t P0 or P1, plus: Any other bugs deemed important and removed P3 Low priority labels Aug 10, 2024
@agilgur5 agilgur5 added this to the v3.5.x patches milestone Aug 15, 2024
Joibel pushed a commit to pipekit/argo-workflows that referenced this issue Sep 19, 2024
Joibel pushed a commit that referenced this issue Sep 20, 2024
#13448)

Signed-off-by: Miltiadis Alexis <alexmiltiadis@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/exit-handler area/hooks P2 Important. All bugs with >=3 thumbs up that aren’t P0 or P1, plus: Any other bugs deemed important type/bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants