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

Deadlock or race condition preventing disposal if headstage never produces frames #406

Open
jonnew opened this issue Feb 5, 2025 · 1 comment
Assignees
Labels
bug Something isn't working critical This is a blocking issue affecting all users
Milestone

Comments

@jonnew
Copy link
Member

jonnew commented Feb 5, 2025

I'm dealing with a pretty nasty issue in which the hardware is left in a complete broken state in some circumstances. The issue seems to stem from a situation in which a headstage is locked and matches the configuration (shows up in device table etc), but, for whatever reason, never produces a frame. This leads to a series of failures

  • Stopping bonsai: hardware is left in running state
  • Closing bonsai: ports remain on and locked

This situation appears to result in infinite loop until complete power cycle of the ONIX hardware indicating some interplay between the context configuration and software locking and disposal sequences.

If I go into oni-repl and manually turn off all ports, make sure that the context is in non-passthrough mode, etc, then i can recover functionality.

Clearly this is non optimal. there should be a catch all at both Start and Stop actions that completely reset ONIX hardware.

@jonnew jonnew added bug Something isn't working critical This is a blocking issue affecting all users labels Feb 5, 2025
@jonnew jonnew added this to the 0.4.4 milestone Feb 5, 2025
@jonnew
Copy link
Member Author

jonnew commented Feb 5, 2025

To be honest @aacuevas I think this is actually equally on software and hardware. The problem with register values that are unaffected by a reset is that there is no easy way to get the hardware to default state in catastrophic situations. It makes we want a secondary reset signal, reset_hard that brings all device registers to power-on default.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working critical This is a blocking issue affecting all users
Projects
None yet
Development

No branches or pull requests

4 participants