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
> 

Reply via email to