Crashes/OoM errors from wide TextView inside Box inside ScrolledWindow
I've been getting this for months and sometimes it catches it and sometimes it locks up X and I have to hold the power button down.
At first it seemed to only occur with very narrow GtkTextView s, so something like a text view that was 2000 lines and each line had 10 characters, and then I would get this. But
gtk_widget_set_size_request((GtkWidget *)textview, width * 5, lines * 10);
seemed to stop it from crashing for a month even. And then I started to get it in other text views and again, added this line.
Now I'm getting it all over the place and I just... I'm tired.
The only warning is these "How does the code know the size to allocate" things which seem really serious, but I have no idea how to fix that and I've searched around. I assume it's something to do with the allocation hints and that I'm resizing stuff or doing stuff that it doesn't like. Should I be calling this gtk_widget_set_size_request every time I create any widget that might be changing sizes? Is there any way to fix those gtk_widget_get_preferred_width warnings?
Thanks.
Edit: I'm sorry, it doesn't like my copy and paste and I'm too tired tonight to fix it. The highlights:
XShmCreatePixmap () from /usr/lib64/libXext.so.6
cairo_surface_create_similar_image () from /usr/lib64/libcairo.so.2
cairo_surface_create_similar () from /usr/lib64/libcairo.so.2
gdk_window_create_similar_surface () from /usr/lib64/libgdk-3.so.0
gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
And I just updated gtk to 3.22.29 from maybe 3.22.17 just in case it would fix it.
Thanks
(lulu:3003): Gtk-WARNING **: Allocating size to GtkScrolledWindow 0x8fc7b0 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?
(lulu:3003): Gdk-ERROR **: The program 'lulu' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
(Details: serial 12082 error_code 11 request_code 130 (MIT-SHM) minor_code 5)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
Thread 1 "lulu" received signal SIGTRAP, Trace/breakpoint trap.
#0 0x00007ffff588a101 in ?? () from /usr/lib64/libglib-2.0.so.0
#1 0x00007ffff588c7b2 in g_log_writer_default () from /usr/lib64/libglib-2.0.so.0
#2 0x00007ffff588ac6c in g_log_structured_array () from /usr/lib64/libglib-2.0.so.0
#3 0x00007ffff588afa1 in g_log_structured () from /usr/lib64/libglib-2.0.so.0
#4 0x00007ffff6f3a921 in ?? () from /usr/lib64/libgdk-3.so.0
#5 0x00007ffff6f47c89 in ?? () from /usr/lib64/libgdk-3.so.0
#6 0x00007ffff4d6634d in _XError () from /usr/lib64/libX11.so.6
#7 0x00007ffff4d63297 in ?? () from /usr/lib64/libX11.so.6
#8 0x00007ffff4d63355 in ?? () from /usr/lib64/libX11.so.6
#9 0x00007ffff4d64300 in _XReply () from /usr/lib64/libX11.so.6
#10 0x00007ffff4d5fbed in XSync () from /usr/lib64/libX11.so.6
#11 0x00007ffff4d5fc8b in ?? () from /usr/lib64/libX11.so.6
#12 0x00007ffff4d66c7f in ?? () from /usr/lib64/libX11.so.6
#13 0x00007ffff355d182 in XShmCreatePixmap () from /usr/lib64/libXext.so.6
#14 0x00007ffff63f96ba in ?? () from /usr/lib64/libcairo.so.2
#15 0x00007ffff63fa291 in ?? () from /usr/lib64/libcairo.so.2
#16 0x00007ffff63fa31c in ?? () from /usr/lib64/libcairo.so.2
#17 0x00007ffff63c7c24 in cairo_surface_create_similar_image () from /usr/lib64/libcairo.so.2
#18 0x00007ffff63c7e18 in cairo_surface_create_similar () from /usr/lib64/libcairo.so.2
#19 0x00007ffff6f28c28 in gdk_window_create_similar_surface () from /usr/lib64/libgdk-3.so.0
#20 0x00007ffff742ca2e in ?? () from /usr/lib64/libgtk-3.so.0
#21 0x00007ffff74c716b in ?? () from /usr/lib64/libgtk-3.so.0
#22 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#23 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#24 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#25 0x00007ffff72bad84 in ?? () from /usr/lib64/libgtk-3.so.0
#26 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#27 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#28 0x00007ffff72bd801 in ?? () from /usr/lib64/libgtk-3.so.0
#29 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#30 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#31 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#32 0x00007ffff742cc72 in ?? () from /usr/lib64/libgtk-3.so.0
#33 0x00007ffff7519d50 in ?? () from /usr/lib64/libgtk-3.so.0
#34 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#35 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#36 0x00007ffff751aa8d in ?? () from /usr/lib64/libgtk-3.so.0
#37 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#38 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#39 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#40 0x00007ffff745a82b in ?? () from /usr/lib64/libgtk-3.so.0
#41 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#42 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#43 0x00007ffff7458d41 in ?? () from /usr/lib64/libgtk-3.so.0
#44 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#45 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#46 0x00007ffff740bbe0 in ?? () from /usr/lib64/libgtk-3.so.0
#47 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#48 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#49 0x00007ffff740ba81 in ?? () from /usr/lib64/libgtk-3.so.0
#50 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#51 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#52 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#53 0x00007ffff72bad84 in ?? () from /usr/lib64/libgtk-3.so.0
#54 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#55 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#56 0x00007ffff72bd801 in ?? () from /usr/lib64/libgtk-3.so.0
#57 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#58 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#59 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#60 0x00007ffff72bad84 in ?? () from /usr/lib64/libgtk-3.so.0
#61 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#62 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
---Type <return> to continue, or q <return> to quit---
#63 0x00007ffff72bd801 in ?? () from /usr/lib64/libgtk-3.so.0
#64 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#65 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#66 0x00007ffff740bbe0 in ?? () from /usr/lib64/libgtk-3.so.0
#67 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#68 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#69 0x00007ffff740ba81 in ?? () from /usr/lib64/libgtk-3.so.0
#70 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#71 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#72 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#73 0x00007ffff72bad84 in ?? () from /usr/lib64/libgtk-3.so.0
#74 0x00007ffff730dbed in ?? () from /usr/lib64/libgtk-3.so.0
#75 0x00007ffff731299d in ?? () from /usr/lib64/libgtk-3.so.0
#76 0x00007ffff72bd801 in ?? () from /usr/lib64/libgtk-3.so.0
#77 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#78 0x00007ffff7308bca in gtk_container_propagate_draw () from /usr/lib64/libgtk-3.so.0
#79 0x00007ffff7308c82 in ?? () from /usr/lib64/libgtk-3.so.0
#80 0x00007ffff7536bd9 in ?? () from /usr/lib64/libgtk-3.so.0
#81 0x00007ffff7527468 in ?? () from /usr/lib64/libgtk-3.so.0
#82 0x00007ffff75322bb in ?? () from /usr/lib64/libgtk-3.so.0
#83 0x00007ffff73cf9c9 in gtk_main_do_event () from /usr/lib64/libgtk-3.so.0
#84 0x00007ffff6f10c35 in ?? () from /usr/lib64/libgdk-3.so.0
#85 0x00007ffff6f212d8 in ?? () from /usr/lib64/libgdk-3.so.0
#86 0x00007ffff6f223b6 in ?? () from /usr/lib64/libgdk-3.so.0
#87 0x00007ffff6f225b4 in ?? () from /usr/lib64/libgdk-3.so.0
#88 0x00007ffff5b5dfd5 in g_closure_invoke () from /usr/lib64/libgobject-2.0.so.0
#89 0x00007ffff5b70361 in ?? () from /usr/lib64/libgobject-2.0.so.0
#90 0x00007ffff5b78e09 in g_signal_emit_valist () from /usr/lib64/libgobject-2.0.so.0
#91 0x00007ffff5b7906f in g_signal_emit () from /usr/lib64/libgobject-2.0.so.0
#92 0x00007ffff6f1a3a1 in ?? () from /usr/lib64/libgdk-3.so.0
#93 0x00007ffff6f05518 in ?? () from /usr/lib64/libgdk-3.so.0
#94 0x00007ffff5885003 in ?? () from /usr/lib64/libglib-2.0.so.0
#95 0x00007ffff588456d in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#96 0x00007ffff5884940 in ?? () from /usr/lib64/libglib-2.0.so.0
#97 0x00007ffff5884c62 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
#98 0x00007ffff73cec55 in gtk_main () from /usr/lib64/libgtk-3.so.0
#99 0x0000000000405162 in main (argc=1, argv=0x7fffffffdda8) at lulu.c:96