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

gimlet-seq: don't ignore notifications in dispatch #1627

Merged
merged 2 commits into from
Feb 22, 2024
Merged

Conversation

hawkw
Copy link
Member

@hawkw hawkw commented Feb 22, 2024

I introduced a regression in the gimlet-seq task in commit 4cb9edd, where the call to idol_runtime::dispatch_n was inadvertently replaced with idol_runtime::dispatch. This resulted in the gimlet-seq task ignoring notifications that it previously handled. In particular, the bug causes the gimlet-seq task to ignore the timer notifications it sets for itself to poll the sequencer state after reaching A0. This manifests as a failure to power on the T6, as described in issue #1625.

This commit fixes the regression by changing dispatch back to dispatch_n. Thanks to @wesolows for identifying the root cause of this bug!

I've tested this on Gimlet c71 in the lab, and after applying this patch, the T6 once again powers on as expected:

BRM42220071 # svcs t6init
STATE          STIME    FMRI
online          0:02:53 svc:/system/t6init:default

Fixes #1625

I introduced a regression in the `gimlet-seq` task in commit
4cb9edd, where the call to
`idol_runtime::dispatch_n` was inadvertently replaced with
`idol_runtime::dispatch`. This resulted in the `gimlet-seq` task
ignoring notifications that it previously handled. In particular, the
bug causes the `gimlet-seq` task to ignore the timer notifications it
sets for itself to poll the sequencer state after reaching A0. This
manifests as a failure to power on the T6, as described in issue #1625.

This commit fixes the regression by changing `dispatch` back to
`dispatch_n`. Thanks to @wesolows for identifying the root cause of this
bug!

I've tested this on Gimlet c71 in the lab, and after applying this
patch, the T6 once again powers on as expected:

```console
BRM42220071 # svcs t6init
STATE          STIME    FMRI
online          0:02:53 svc:/system/t6init:default
```

Fixes #1625

Authored-by: Keith M Wesolowski <60712355+wesolows@users.noreply.github.com>
Copy link
Contributor

@wesolows wesolows left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I would like to suggest a followup, perhaps in idolatry, to make this kind of error impossible. My suggestion of a negative trait bound on S in dispatch was somewhat flippant but perhaps there is a practical means of achieving the same thing (which I wouldn't know).

@hawkw
Copy link
Member Author

hawkw commented Feb 22, 2024

I would like to suggest a followup, perhaps in idolatry, to make this kind of error impossible.

Yeah, I think @cbiffle is looking into this! It's definitely unfortunate that a two-character function name difference can leave a task permanently stuck...

Copy link
Collaborator

@labbott labbott left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@hawkw hawkw enabled auto-merge (squash) February 22, 2024 18:46
@hawkw hawkw merged commit 254b0bc into master Feb 22, 2024
83 checks passed
@hawkw hawkw deleted the eliza/unstuck-seq branch February 22, 2024 19:19
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 this pull request may close these issues.

reproducible T6 failure at boot since
3 participants