Skip to content

Subscription socket not closed properly #83

@orestisfl

Description

@orestisfl

Related to i3/i3#2999.

Minimal example:

#!/usr/bin/env python3
import i3ipc


def on_ws_focus(self, e):
    print(e.old.name, '->', e.current.name)


for i in range(10):
    try:
        i3 = i3ipc.Connection()
        i3.on('workspace::focus', on_ws_focus)
        i3.main()
    except KeyboardInterrupt:
        print('ctrl-c pressed for connection #', i)
        # uncomment to unbug: i3.main_quit()

With the line commented out: https://bpaste.net/raw/abbf7e3ea890
With the line uncommented: https://bpaste.net/raw/667fe94a2d58

This will lead i3 to get stuck receiving EAGAIN errors while trying to write to the socket fd because the client is not reading from the pipe:
https://github.com/i3/i3/blob/55dd5b8d8406c45b8ba406eabe453bc8596c1336/libi3/safewrappers.c#L75-L79

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions