Hi,

with i3-4.17 and i3-4.17.1 from snapshots on amd64 -current, i3 is terminated by
pledge() when using the append_layout feature. The previous package version
4.16.1p0 works fine. The offending syscall is shmget(), dmesg says:

    i3[72874]: pledge "", syscall 289

The backtrace looks like this (after rebuilding 4.17.1 from ports tree with
debug symbols):

#0  shmget () at -:3
#1  0x0000049c13dc2443 in _cairo_xcb_connection_get () from 
/usr/local/lib/libcairo.so.13.0
#2  0x0000049c13dc3d96 in _cairo_xcb_screen_get () from 
/usr/local/lib/libcairo.so.13.0
#3  0x0000049c13dc626b in cairo_xcb_surface_create () from 
/usr/local/lib/libcairo.so.13.0
#4  0x00000499537fcab4 in draw_util_surface_init (conn=0x49c37a1a000, 
surface=0x49c3aa3c5a0, drawable=Variable "drawable" is not available.
)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/libi3/draw_util.c:51
#5  0x00000499537ef08c in open_placeholder_window (con=0x49bc4ae2c00)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/restore_layout.c:224
#6  0x00000499537ef128 in open_placeholder_window (con=0x49b9a875600)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/restore_layout.c:238
#7  0x00000499537eee78 in restore_open_placeholder_windows 
(parent=0x49bb2739a00)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/restore_layout.c:255
#8  0x00000499537c0bbd in cmd_append_layout (current_match=Variable 
"current_match" is not available.
)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/commands.c:839
#9  0x00000499537c7df0 in next_state (token=Variable "token" is not available.
) at GENERATED_command_call.h:246
#10 0x00000499537c6fdf in parse_command (
    input=0x49bab6a4a00 "workspace 1; append_layout 
~/.i3/workspace-sample.json", gen=Variable "gen" is not available.
)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/commands_parser.c:349
#11 0x00000499537de3ea in handle_run_command (client=0x49bfe6f0780, 
message=Variable "message" is not available.
)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/ipc.c:231
#12 0x00000499537dfbeb in ipc_receive_message (loop=Variable "loop" is not 
available.
)
    at /home/obj/i3-4.17.1/i3-4.17.1/../i3-4.17.1/src/ipc.c:1360
#13 0x0000049bd5c7e10f in ev_invoke_pending () from /usr/local/lib/libev.so.3.1
#14 0x0000049bd5c7f004 in ev_run () from /usr/local/lib/libev.so.3.1
#15 0x00000499537e6ad3 in main (argc=Variable "argc" is not available.
) at ev.h:837

Here is a minimal ~/.i3/config to reproduce:

# i3 config file (v4)
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
exec --no-startup-id "i3-msg 'workspace 1; append_layout 
~/.i3/workspace-sample.json'"

To be used with this ~/.i3/workspace-sample.json:

{
    // stacked split container with 2 children
    "border": "normal",
    "floating": "auto_off",
    "layout": "stacked",
    "percent": 0.5,
    "type": "con",
    "nodes": [
        {
            "border": "normal",
            "current_border_width": 2,
            "floating": "auto_off",
            "geometry": {
               "height": 364,
               "width": 644,
               "x": 0,
               "y": 0
            },
            "name": "tmux",
            "percent": 0.5,
            "swallows": [
               {
               // "class": "^XTerm$",
               // "instance": "^xterm$",
               "title": "^tmux$"
               // "transient_for": "^$"
               }
            ],
            "type": "con"
        }
    ]
}

The problem can also be reproduced in version 4.17 and 4.17.1 by running the
i3-msg append_layout from a terminal after i3 has started. In 4.16.1p0 there is
no abort either.

The pledge() call hasn't changed between those versions, also the working and
non-working versions all use the same cairo libs. Looks like some internal
change within i3 is causing this.

Cheers,
Ralf

Reply via email to