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

Exiting a terminal crashes #46

Open
davidbrochart opened this issue Jun 3, 2016 · 5 comments
Open

Exiting a terminal crashes #46

davidbrochart opened this issue Jun 3, 2016 · 5 comments

Comments

@davidbrochart
Copy link

The minute I enter a command in a terminal, I get the following error when I enter exit (there is no error if I exit right after creating the tab):

Traceback (most recent call last):
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/cache.py", line 32, in get
    return self._data[key]
KeyError: 14

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/main.py", line 517, in run_server
    PipeInput(), DummyCallbacks())
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/eventloop/posix.py", line 162, in run
    t()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/interface.py", line 324, in redraw
    self._redraw()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/interface.py", line 344, in _redraw
    self.renderer.render(self, self.layout, is_done=self.is_done)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/renderer.py", line 422, in render
    extended_height=size.rows,
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 398, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 157, in write_to_screen
    c.write_to_screen(cli, screen, mouse_handlers, WritePosition(xpos, ypos, width, s))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 885, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 512, in write_to_screen
    fl.content.write_to_screen(cli, screen, mouse_handlers, wp)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 989, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 541, in write_to_screen
    body.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 157, in write_to_screen
    c.write_to_screen(cli, screen, mouse_handlers, WritePosition(xpos, ypos, width, s))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 977, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 142, in write_to_screen
    sizes = self._divide_heigths(cli, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 177, in _divide_heigths
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 177, in <listcomp>
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 175, in get_dimension_for_child
    return c.preferred_height(cli, write_position.width, write_position.extended_height)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 254, in preferred_height
    sizes = self._divide_widths(cli, width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 283, in _divide_widths
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 283, in <listcomp>
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 281, in get_dimension_for_child
    return c.preferred_width(cli, width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 977, in preferred_width
    cli, max_available_width - total_margin_width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 249, in preferred_width
    text = token_list_to_text(self._get_tokens_cached(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 239, in _get_tokens_cached
    cli.render_counter, lambda: self.get_tokens(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/cache.py", line 35, in get
    value = getter_func()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 239, in <lambda>
    cli.render_counter, lambda: self.get_tokens(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 695, in get_title_tokens
    if arrangement_pane.name:
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/arrangement.py", line 91, in name
    name = self.process.get_name()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/process.py", line 336, in get_name
    return get_name_for_fd(self.master)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/process.py", line 429, in get_name_for_fd
    pgrp = os.tcgetpgrp(fd)
OSError: [Errno 0] Error

@jonathanslenders
Copy link
Member

Thanks a lot for reporting this bug, @davidbrochart!

I'll try to fix this asap. What operating system are you using?

@davidbrochart
Copy link
Author

It's an old RedHat Entreprise Linux 5.7.

@davidbrochart
Copy link
Author

I have upgrated pymux and I have noticed that there is some improvement but now sometimes when I exit pymux freezes. Here is the stack trace:

Traceback (most recent call last):
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/cache.py", line 32, in get
    return self._data[key]
KeyError: 36

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/main.py", line 517, in run_server
    PipeInput(), DummyCallbacks())
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/eventloop/posix.py", line 162, in run
    t()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/interface.py", line 326, in redraw
    self._redraw()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/interface.py", line 346, in _redraw
    self.renderer.render(self, self.layout, is_done=self.is_done)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/renderer.py", line 429, in render
    extended_height=size.rows,
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 398, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 157, in write_to_screen
    c.write_to_screen(cli, screen, mouse_handlers, WritePosition(xpos, ypos, width, s))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 885, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 512, in write_to_screen
    fl.content.write_to_screen(cli, screen, mouse_handlers, wp)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 989, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 541, in write_to_screen
    body.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 157, in write_to_screen
    c.write_to_screen(cli, screen, mouse_handlers, WritePosition(xpos, ypos, width, s))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 977, in write_to_screen
    _ContainerProxy.write_to_screen(self, cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 844, in write_to_screen
    self.content.write_to_screen(cli, screen, mouse_handlers, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 142, in write_to_screen
    sizes = self._divide_heigths(cli, write_position)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 177, in _divide_heigths
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 177, in <listcomp>
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 175, in get_dimension_for_child
    return c.preferred_height(cli, write_position.width, write_position.extended_height)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 254, in preferred_height
    sizes = self._divide_widths(cli, width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 283, in _divide_widths
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 283, in <listcomp>
    dimensions = [get_dimension_for_child(c, index) for index, c in enumerate(self.children)]
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 281, in get_dimension_for_child
    return c.preferred_width(cli, width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/containers.py", line 980, in preferred_width
    cli, max_available_width - total_margin_width)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 249, in preferred_width
    text = token_list_to_text(self._get_tokens_cached(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 239, in _get_tokens_cached
    cli.render_counter, lambda: self.get_tokens(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/cache.py", line 35, in get
    value = getter_func()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/prompt_toolkit/layout/controls.py", line 239, in <lambda>
    cli.render_counter, lambda: self.get_tokens(cli))
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/layout.py", line 695, in get_title_tokens
    if arrangement_pane.name:
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/arrangement.py", line 91, in name
    name = self.process.get_name()
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/process.py", line 336, in get_name
    return get_name_for_fd(self.master)
  File "/remote/vgrnd5/davidbr/soft/anaconda3/lib/python3.4/site-packages/pymux/process.py", line 429, in get_name_for_fd
    pgrp = os.tcgetpgrp(fd)
OSError: [Errno 0] Error

@jonathanslenders
Copy link
Member

Hi @davidbrochart, Thanks for this traceback!
I added a try/catch around this tcgetpgrp call: 77463d8

I'm not sure why it happens, maybe some timing issues. (It could be that the process group is not around when the process terminates, not sure.) But this should probably do it.

@davidbrochart
Copy link
Author

Thanks, I will try it out.

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