strotlog
New Member
Encountered this crash randomly soon after setup. OBS 26.0.2 on Ubuntu 20.04 amd64.
Download my CoreDump Link 1 | Link 2
For external package symbols please use:
libgl1-dbgsym:amd64 (1.3.1-1ubuntu0.20.04.1)
libgl1-mesa-dri-dbgsym:amd64 (20.0.8-0ubuntu1~20.04.1)
Call stack:
(gdb) bt
#0 lp_scene_bin_command (arg=..., cmd=0, y=0, x=151, scene=0x7f6fd4788010)
at ../src/gallium/drivers/llvmpipe/lp_scene.h:364
#1 lp_scene_bin_everywhere (arg=..., cmd=0, scene=0x7f6fd4788010)
at ../src/gallium/drivers/llvmpipe/lp_scene.h:364
#2 begin_binning (setup=0x55d10b13d2e0) at ../src/gallium/drivers/llvmpipe/lp_setup.c:239
#3 0x00007f6fe1091f7a in execute_clears (setup=0x55d10b13d2e0)
at ../src/gallium/drivers/llvmpipe/lp_setup.c:280
#4 set_scene_state (setup=setup@entry=0x55d10b13d2e0, new_state=new_state@entry=SETUP_FLUSHED,
reason=<optimized out>) at ../src/gallium/drivers/llvmpipe/lp_setup.c:328
#5 0x00007f6fe1092b77 in lp_setup_flush (setup=0x55d10b13d2e0, fence=0x0, reason=<optimized out>)
at ../src/gallium/drivers/llvmpipe/lp_setup.c:360
#6 0x00007f6fe0aa3758 in st_glFlush (ctx=<optimized out>) at ../src/mesa/state_tracker/st_cb_flush.c:100
#7 0x00007f6fe22a3025 in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#8 0x00007f6ff61a42d2 in render_display () from /lib/libobs.so.0
#9 0x00007f6ff61ad010 in obs_graphics_thread_loop () from /lib/libobs.so.0
#10 0x00007f6ff61adf48 in obs_graphics_thread () from /lib/libobs.so.0
#11 0x00007f6ff526d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#12 0x00007f6ff5194293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Crashing line, from #0:
struct lp_scene {
...
struct cmd_bin tile[TILES_X][TILES_Y];
};
/** Return pointer to a particular tile's bin. */
static inline struct cmd_bin *
lp_scene_get_bin(struct lp_scene *scene, unsigned x, unsigned y)
{
return &scene->tile[x][y];
}
...
struct cmd_bin *bin = lp_scene_get_bin(scene, x, y);
struct cmd_block *tail = bin->tail;
The access violation and crash is due to some component deciding to exceed Mesa's maximum frame size (it has a hardcoded array limit of TILES_X=128 rows, i.e. 128 tiles in one dimension, i.e. 8192 pixels in one dimension). The mystery is why did some frame exceed this size limitation? The frame size in the crash is 566 x 1 tiles, or 36208 x 1 pixels. I was not using any canvas or sources that had dimensions like this.
(gdb) display x
: x = 151
(gdb) display scene->tiles_x
: scene->tiles_x = 566
(gdb) display scene->tiles_y
: scene->tiles_y = 1
(gdb) display scene->fb
: scene->fb = {width = 36208, height = 1, layers = 0, samples = 0 '\000', nr_cbufs = 1 '\001', cbufs = {0x7f6fa43a9d40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, zsbuf = 0x0}
Download my CoreDump Link 1 | Link 2
For external package symbols please use:
libgl1-dbgsym:amd64 (1.3.1-1ubuntu0.20.04.1)
libgl1-mesa-dri-dbgsym:amd64 (20.0.8-0ubuntu1~20.04.1)
Call stack:
(gdb) bt
#0 lp_scene_bin_command (arg=..., cmd=0, y=0, x=151, scene=0x7f6fd4788010)
at ../src/gallium/drivers/llvmpipe/lp_scene.h:364
#1 lp_scene_bin_everywhere (arg=..., cmd=0, scene=0x7f6fd4788010)
at ../src/gallium/drivers/llvmpipe/lp_scene.h:364
#2 begin_binning (setup=0x55d10b13d2e0) at ../src/gallium/drivers/llvmpipe/lp_setup.c:239
#3 0x00007f6fe1091f7a in execute_clears (setup=0x55d10b13d2e0)
at ../src/gallium/drivers/llvmpipe/lp_setup.c:280
#4 set_scene_state (setup=setup@entry=0x55d10b13d2e0, new_state=new_state@entry=SETUP_FLUSHED,
reason=<optimized out>) at ../src/gallium/drivers/llvmpipe/lp_setup.c:328
#5 0x00007f6fe1092b77 in lp_setup_flush (setup=0x55d10b13d2e0, fence=0x0, reason=<optimized out>)
at ../src/gallium/drivers/llvmpipe/lp_setup.c:360
#6 0x00007f6fe0aa3758 in st_glFlush (ctx=<optimized out>) at ../src/mesa/state_tracker/st_cb_flush.c:100
#7 0x00007f6fe22a3025 in ?? () from /lib/x86_64-linux-gnu/libGLX_mesa.so.0
#8 0x00007f6ff61a42d2 in render_display () from /lib/libobs.so.0
#9 0x00007f6ff61ad010 in obs_graphics_thread_loop () from /lib/libobs.so.0
#10 0x00007f6ff61adf48 in obs_graphics_thread () from /lib/libobs.so.0
#11 0x00007f6ff526d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#12 0x00007f6ff5194293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Crashing line, from #0:
struct lp_scene {
...
struct cmd_bin tile[TILES_X][TILES_Y];
};
/** Return pointer to a particular tile's bin. */
static inline struct cmd_bin *
lp_scene_get_bin(struct lp_scene *scene, unsigned x, unsigned y)
{
return &scene->tile[x][y];
}
...
struct cmd_bin *bin = lp_scene_get_bin(scene, x, y);
struct cmd_block *tail = bin->tail;
The access violation and crash is due to some component deciding to exceed Mesa's maximum frame size (it has a hardcoded array limit of TILES_X=128 rows, i.e. 128 tiles in one dimension, i.e. 8192 pixels in one dimension). The mystery is why did some frame exceed this size limitation? The frame size in the crash is 566 x 1 tiles, or 36208 x 1 pixels. I was not using any canvas or sources that had dimensions like this.
(gdb) display x
: x = 151
(gdb) display scene->tiles_x
: scene->tiles_x = 566
(gdb) display scene->tiles_y
: scene->tiles_y = 1
(gdb) display scene->fb
: scene->fb = {width = 36208, height = 1, layers = 0, samples = 0 '\000', nr_cbufs = 1 '\001', cbufs = {0x7f6fa43a9d40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, zsbuf = 0x0}
Last edited: