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