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

GLFW crashes entire julia session after re-attaching in tmux #230

Open
lassepe opened this issue Jul 25, 2023 · 2 comments
Open

GLFW crashes entire julia session after re-attaching in tmux #230

lassepe opened this issue Jul 25, 2023 · 2 comments

Comments

@lassepe
Copy link

lassepe commented Jul 25, 2023

Migrating from MakieOrg/Makie.jl#3092

I frequently use GLMakie from within a remote tmux ssh session via x-forwarding. That generally works quite well; however, it does not survive re-attaching. Indeed, the issue can be reproduced with a plain GLFW window:

Steps to reproduce:

  1. Connect to a ssh remote, e.g., ssh <user@hostname>
  2. run tmux on the remote
  3. Start a Julia REPL on the remote, run using GLFW; GLFW.Window()
  4. Detach from the tmux session using CTRL+b, d
  5. Disconnect from ssh client using exit
  6. Re-connect to ssh client ssh <user@hostname>
  7. Re-attach to tmux session tmux -u attach-session
  8. Open another window GLFW.Window().

Step 8 here fails reliably with

XIO:  fatal IO error 2 (No such file or directory) on X server "localhost:10.0"
      after 212 requests (212 known processed) with 1111 events remaining.

Note: this error is slightly different from the one originally reported in MakieOrg/Makie.jl#3092 (here we now have "No such file or directory").

I verified that the DISPLAY variable is set correctly upon re-attaching. I suspect, however, that maybe some socket is moved/re-created upon re-attaching which invalidates some GLFW internal state? In fact, if I start a fresh Julia session and load GLFW after re-attaching, things work as expected.

Thoughts/Questions

  1. Ideally, GLFW should be robust to this kind of re-attaching.
  2. Even if GLFW itself cannot recover, it would be desirable to not kill the REPL upon this error.
  3. As a temporary workaround, is there some kind of "reset"-function that I can call to reset the internal state of GLFW upon re-attaching?
@SimonDanisch
Copy link
Member

You should open this with the C GLFW repository, since here it's basically just me reading the issue^^

@lassepe
Copy link
Author

lassepe commented Jul 30, 2023

Thanks, I have filed an issue in the C GLFW repository. Irrespective of the upstream fix, would it be possible to handle this issue more gracefully on the Julia end (somehow catch the error instead of closing the REPL?)

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

No branches or pull requests

2 participants