Tuesday, November 26, 2019

Re: firefox pledge "", syscall 289

On 2019/11/26 11:57, Chris Cappuccio wrote:
> I keep getting random crashes on firefox tabs related to DRI use of shm.
> The funny thing is, 'ipcs' never shows any allocated shm right before the
> crash, or at any time. The shmget is entirely superfluous, but it crashes
> my browser. If I restart firefox, this can go away for hours or a few days,
> and then it starts trying to do shmget again for a bit. It seems to be
> partiallyu related to the web page, and its use of the browser.
>
> This is both on 6.6 and current. Is anyone else seeing this with an inteldrm
> based console, or any console and firefox ??
>
> #0 shmget () at -:3
> #1 0x000013e24027df7c in dri_sw_displaytarget_create ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #2 0x000013e240434d51 in llvmpipe_resource_create ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #3 0x000013e2400eaaad in drisw_allocate_textures ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #4 0x000013e2400e7d9d in dri_st_framebuffer_validate ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #5 0x000013e23fef93ad in st_framebuffer_validate ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #6 0x000013e23fefa241 in st_api_make_current ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #7 0x000013e2400e77f9 in dri_make_current ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #8 0x000013e2400e627a in driBindContext ()
> from /usr/X11R6/lib/modules/dri/swrast_dri.so
> #9 0x000013e1ec0497ba in drisw_bind_context ()
> from /usr/X11R6/lib/libGL.so.17.1
> #10 0x000013e1ec04fb8c in glXMakeCurrentReadSGI ()
> from /usr/X11R6/lib/libGL.so.17.1
> #11 0x000013e1f780fcda in std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >::__append () from /usr/local/lib/firefox/libxul.so.84.0
> ...
> libxul trace + broken trace
>

Two simpler ways likely to bypass it, one is the diff below which is
expected to slow things down for non-pledged programs, the other is to
disable pledge in firefox which you can do with lines like these in
prefs.js (replace if already present, add if not).

user_pref("security.sandbox.pledge.content", "moo");
user_pref("security.sandbox.pledge.main", "moo");

(this is the method for current Firefox, but future updates are
expected to move this config into a different file).

Index: src/gallium/winsys/sw/dri/dri_sw_winsys.c
===================================================================
RCS file: /cvs/OpenBSD/xenocara/lib/mesa/src/gallium/winsys/sw/dri/dri_sw_winsys.c,v
retrieving revision 1.7
diff -u -p -u -r1.7 dri_sw_winsys.c
--- src/gallium/winsys/sw/dri/dri_sw_winsys.c 19 Feb 2019 04:24:01 -0000 1.7
+++ src/gallium/winsys/sw/dri/dri_sw_winsys.c 5 Oct 2019 09:15:29 -0000
@@ -138,7 +138,7 @@ dri_sw_displaytarget_create(struct sw_wi

dri_sw_dt->shmid = -1;

-#ifdef HAVE_SHM
+#if defined(HAVE_SHM) && !defined(__OpenBSD__)
if (ws->lf->put_image_shm)
dri_sw_dt->data = alloc_shm(dri_sw_dt, size);

No comments:

Post a Comment