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

Blocking signals backtraces #608

Closed
dmilith opened this issue Mar 4, 2013 · 9 comments
Closed

Blocking signals backtraces #608

dmilith opened this issue Mar 4, 2013 · 9 comments
Labels
Milestone

Comments

@dmilith
Copy link

dmilith commented Mar 4, 2013

http://dmilith.verknowsys.com/Public/Sshots/s04-13:45:21.jpg
http://dmilith.verknowsys.com/Public/Sshots/s04-13:45:42.jpg

@zanchey
Copy link
Member

zanchey commented Mar 4, 2013

Could you explain what you were doing when this message appeared?

@dmilith
Copy link
Author

dmilith commented Mar 4, 2013

Just spawned fish, and second fish in the tab next to first one. Zsh 5.0 in background. Spawned from iTerm2.

@dmilith
Copy link
Author

dmilith commented Mar 4, 2013

It's 100% reproductible. I just added "exec fish" at end of ~/.zshrc, and I'm spawning new tab in iterm. After that on previously opened fish console these backtraces happen (every single time)

@zanchey
Copy link
Member

zanchey commented Mar 5, 2013

I do something similar, although not on OS X. Could you confirm the version of the build you are running, how you built it (Xcode or autotools) and what version of OS X you have?

I wonder if your .zshrc, etc. could be poisoning your environment somehow. Are you able to chsh to fish temporarily, exit all fish and fishd processes, and then try again?

@ridiculousfish
Copy link
Member

This backtrace is reading universal variables from the daemon. There's a universal variable, and a function that watches it. When we receive the universal variable change, we run the function. That can happen at some pretty arbitrary points, in this case, determining the environment variables.

In other words, fish wants to determine the environment variable array, so it reads the latest update from fishd, which changes a variable, which causes a function to run.

fish 1.x had similar issues.

@ridiculousfish
Copy link
Member

@dmilith , can you please share your list of universal variables, that is, the output of set -UL? Feel free to censor anything personal.

@dmilith
Copy link
Author

dmilith commented Mar 10, 2013

⌘ frenziedmon:~ λ ⇒ set -UL
__fish_init_1_22_0
__fish_init_1_50_0
fish_color_autosuggestion '005f5f' '--underline'
fish_color_command 87d787
fish_color_comment 5f5f5f
fish_color_cwd green
fish_color_cwd_root red
fish_color_error 'ff0000' '--bold'
fish_color_escape cyan
fish_color_history_current 00ffff
fish_color_match 00d787
fish_color_normal normal
fish_color_operator cyan
fish_color_param '00afff' 'cyan'
fish_color_quote brown
fish_color_redirection ffff5f
fish_color_search_match '080808' '--background=303030' '--underline'
fish_color_valid_path --underline
fish_greeting ''
fish_key_bindings fish_default_key_bindings
fish_pager_color_completion normal
fish_pager_color_description '555' 'yellow'
fish_pager_color_prefix cyan
fish_pager_color_progress cyan

nothing personal in here

@ridiculousfish
Copy link
Member

Thanks. The only --on-variable firing-functions that ship by default are for the fish_color_* guys. I wonder if we should move to a model where events are enqueued, instead of firing immediately

@ridiculousfish
Copy link
Member

I added code that enqueues event handlers if signals are blocked, instead of running them immediately. That should fix this problem.
d9445f0

Thanks for reporting this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants