Thanks, I've disabled the pledges for now. The shmget calls are in cairo
so the update will be causing a different path to be taken there. If
someone is interested in bringing back the pledges, comparing library
calls between 4.16.1 and 4.17 (possibly with the help of ltrace) might
be a useful starting point.
On 2019/09/04 21:12, Ralf Horstmann wrote:
> 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
>