Add a New Comment (Rich Markup)
( Jump to the original submission )
Fixed, tests are welcome. Now WeeChat will display only what it's possible to display (according to size of terminal). The windows or bars too small (width or height = 0) will be ignored (for display). And I removed the minimum sizes for windows (5x2), now 1x1 is allowed (the only thing is that chat area must have at least 2 lines to be displayed, otherwise with one line you will see: "...").
(gdb) bt full #0 0xb7761832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb7375e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb737934e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x0809abc0 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b81c8 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x080729e1 in gui_bar_item_default_scroll (data=0x0, item=0x8327978, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-item.c:995 buf = "\031F08\020\000\000\000\220\203\062\b\200x2\b\000\000\000\000\300\223J\267\220\203\062\bX{2\b'\022\a\b\230y2\b\360\330\021\b\300\223J\267#1\r\bh1¿\000\000\000\000\000\000\000" #7 0x08071641 in gui_bar_item_get_value (bar=0x811d268, window=0x8328390, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000\312\062\b\364\177J\267\300\223J\267\204\063¿\030\062¿S\257;\267\030\062¿" bar_color = "\000F00\000\177J\267\300\223J\267\020\000\000\000\030\315\062\bT\301;\267\030\315\062\b\300\223J\267" result = 0x83315e0 "\031F16weechat" str_attr = "\000\264;\267X2¿" length = 12 ptr_item = 0x8327978 ptr_plugin = 0x0 #8 0x08075885 in gui_bar_window_content_build_item (bar_window=0x8329248, window=0x8328390, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08075936 in gui_bar_window_content_build (bar_window=0x8329248, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x0806a776 in gui_window_switch_to_buffer (window=0x8328390, buffer=0x8327ec0, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8329248 old_buffer = 0x8327ec0 #11 0x08067ec8 in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:275 ptr_win = 0x8328390 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x080680bb in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:360 hook_fd_keyboard = 0x832ddb0 tv_timeout = {tv_sec = 0, tv_usec = 365000} read_fds = {fds_bits = {65, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 6 ready = -1 #13 0x0809ad99 in main (argc=3, argv=0xbfc23594) at /usr/local/src/weechat/src/core/weechat.c:475 No locals.
(gdb) bt full #0 0xb7712832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb7326e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb732a34e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x0809abc0 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b81c8 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x080729e1 in gui_bar_item_default_scroll (data=0x0, item=0x8327978, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-item.c:995 buf = "\031F08\020\000\000\000\220\203\062\b\200x2\b\000\000\000\000\300\243E\267\220\203\062\bX{2\b'\022\a\b\230y2\b\360\330\021\b\300\243E\267#1\r\b\310i\245\277\000\000\000\000\000\000\000" #7 0x08071641 in gui_bar_item_get_value (bar=0x811d268, window=0x8328390, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000\312\062\b\364\217E\267\300\243E\267\344k\245\277xj\245\277S\277\066\267xj\245\277" bar_color = "\000F00\000\217E\267\300\243E\267\020\000\000\000\030\315\062\bT\321\066\267\030\315\062\b\300\243E\267" result = 0x83284f0 "\031F16weechat" str_attr = "\000\304\066\267\270j\245\277" length = 12 ptr_item = 0x8327978 ptr_plugin = 0x0 #8 0x08075885 in gui_bar_window_content_build_item (bar_window=0x8329248, window=0x8328390, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08075936 in gui_bar_window_content_build (bar_window=0x8329248, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x0806a776 in gui_window_switch_to_buffer (window=0x8328390, buffer=0x8327ec0, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8329248 old_buffer = 0x8327ec0 #11 0x08067ec8 in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:275 ptr_win = 0x8328390 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x080680bb in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:360 hook_fd_keyboard = 0x832ddb0 tv_timeout = {tv_sec = 0, tv_usec = 84000} read_fds = {fds_bits = {65, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 6 ready = -1 #13 0x0809ad99 in main (argc=3, argv=0xbfa56df4) at /usr/local/src/weechat/src/core/weechat.c:475 No locals.
(gdb) bt full #0 0xb7791832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb73a5e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb73a934e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x0809abc0 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b81c8 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x080729e1 in gui_bar_item_default_scroll (data=0x0, item=0x8335528, window=0x8335f40) at /usr/local/src/weechat/src/gui/gui-bar-item.c:995 buf = "\031F08\020\000\000\000@_3\b0T3\b\000\000\000\000\300\223M\267@_3\b\bW3\b'\022\a\bHU3\b\360\330\021\b\300\223M\267#1\r\b(>\244\277\000\000\000\000\000\000\000" #7 0x08071641 in gui_bar_item_get_value (bar=0x811d268, window=0x8335f40, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000\366]\b\364\177M\267\300\223M\267D@\244\277\330>\244\277S\257>\267\330>\244\277" bar_color = "\000F00\000\177M\267\300\223M\267\020\000\000\000\300\222\\\bT\301>\267\300\222\\\b\300\223M\267" result = 0x84705b8 "\031F16weechat" str_attr = "\000\264>\267\030?\244\277" length = 12 ptr_item = 0x8335528 ptr_plugin = 0x0 #8 0x08075885 in gui_bar_window_content_build_item (bar_window=0x8337068, window=0x8335f40, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08075936 in gui_bar_window_content_build (bar_window=0x8337068, window=0x8335f40) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x0806a776 in gui_window_switch_to_buffer (window=0x8335f40, buffer=0x8335a70, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8337068 old_buffer = 0x8335a70 #11 0x08067ec8 in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:275 ptr_win = 0x8335f40 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x080680bb in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:360 hook_fd_keyboard = 0x833c0b0 tv_timeout = {tv_sec = 0, tv_usec = 457000} read_fds = {fds_bits = {65, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 6 ready = -1 #13 0x0809ad99 in main (argc=3, argv=0xbfa44254) at /usr/local/src/weechat/src/core/weechat.c:475 No locals.
And one with just Perl loaded:
(gdb) bt full #0 0xb7782832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb7396e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb739a34e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x0809abc0 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b81c8 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x080729e1 in gui_bar_item_default_scroll (data=0x0, item=0x8327978, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-item.c:995 buf = "\031F08\020\000\000\000\220\203\062\b\200x2\b\000\000\000\000\300\243L\267\220\203\062\bX{2\b'\022\a\b\230y2\b\360\330\021\b\300\243L\267#1\r\b?\277\000\000\000\000\000\000\000" #7 0x08071641 in gui_bar_item_get_value (bar=0x811d268, window=0x8328390, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000\244L\267\364\217L\267\300\243L\267\004\237\271\277\230\235\271\277S\277=\267\230\235\271\277" bar_color = "\000F00\000\217L\267\300\243L\267\020\000\000\000\310\322\062\bT\321=\267\310\322\062\b\300\243L\267" result = 0x83294b8 "\031F16weechat" str_attr = "\000\304=\267\330\235\271\277" length = 12 ptr_item = 0x8327978 ptr_plugin = 0x0 #8 0x08075885 in gui_bar_window_content_build_item (bar_window=0x8329248, window=0x8328390, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08075936 in gui_bar_window_content_build (bar_window=0x8329248, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x0806a776 in gui_window_switch_to_buffer (window=0x8328390, buffer=0x8327ec0, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8329248 old_buffer = 0x8327ec0 #11 0x08067ec8 in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:275 ptr_win = 0x8328390 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x080680bb in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:360 hook_fd_keyboard = 0x836a158 tv_timeout = {tv_sec = 0, tv_usec = 469000} read_fds = {fds_bits = {1, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 0 ready = -1 #13 0x0809ad99 in main (argc=3, argv=0xbfb9a114) at /usr/local/src/weechat/src/core/weechat.c:475 No locals.
Steps to reproduce above crashes: - Terminal window of 50x15 (Lucida Console 8-point font so the same amount of text should be visible) - /window splith - /iset blaat - /window zoom - /window zoom - /buffer close - resize terminal window to be bigger Result: crash Reproduceable: 100%
And with latest git:
(gdb) bt full #0 0xb776c832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb7380e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb738434e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x0809abc0 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b81c8 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x080729e1 in gui_bar_item_default_scroll (data=0x0, item=0x8327978, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-item.c:995 buf = "\031F08\020\000\000\000\220\203\062\b\200x2\b\000\000\000\000\300CK\267\220\203\062\bX{2\b'\022\a\b\230y2\b\360\330\021\b\300CK\267#1\r\b\030k\220\277\000\000\000\000\000\000\000" #7 0x08071641 in gui_bar_item_get_value (bar=0x811d268, window=0x8328390, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000|]\b\364/K\267\300CK\267\064m\220\277\310k\220\277S_<\267\310k\220\277" bar_color = "\000F00\000/K\267\300CK\267\020\000\000\000\260Q\\\bTq<\267\260Q\\\b\300CK\267" result = 0x8462658 "\031F16weechat" str_attr = "\000d<\267\bl\220\277" length = 12 ptr_item = 0x8327978 ptr_plugin = 0x0 #8 0x08075885 in gui_bar_window_content_build_item (bar_window=0x8329248, window=0x8328390, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08075936 in gui_bar_window_content_build (bar_window=0x8329248, window=0x8328390) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x0806a776 in gui_window_switch_to_buffer (window=0x8328390, buffer=0x8327ec0, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8329248 old_buffer = 0x8327ec0 #11 0x08067ec8 in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:275 ptr_win = 0x8328390 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x080680bb in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:360 hook_fd_keyboard = 0x832ddb0 tv_timeout = {tv_sec = 0, tv_usec = 647000} read_fds = {fds_bits = {65, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 6 ready = -1 #13 0x0809ad99 in main (argc=3, argv=0xbf906f44) at /usr/local/src/weechat/src/core/weechat.c:475 No locals. (gdb)
(gdb) bt full #0 0xb7774832 in ?? () from /lib/ld-linux.so.2 No symbol table info available. #1 0xb7388e71 in raise () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #2 0xb738c34e in abort () from /lib/i386-linux-gnu/libc.so.6 No symbol table info available. #3 0x08099b54 in weechat_shutdown (return_code=1, crash=1) at /usr/local/src/weechat/src/core/weechat.c:410 No locals. #4 0x080b6d00 in debug_sigsegv () at /usr/local/src/weechat/src/core/wee-debug.c:168 No locals. #5 <signal handler called> No symbol table info available. #6 0x0807206a in gui_bar_item_default_scroll (data=0x0, item=0x8325310, window=0x8325d28) at /usr/local/src/weechat/src/gui/gui-bar-item.c:997 buf = "\031F08\020\000\000\000(]2\b\030R2\b\000\000\000\000\300\303K\267(]2\b\360T2\b\357\b\a\b0S2\bx\262\021\b\300\303K\267\273\032\r\bHM\220\277\000\000\000\000\000\000\000" #7 0x08070d09 in gui_bar_item_get_value (bar=0x811abf0, window=0x8325d28, item=7, subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-item.c:309 item_value = 0x0 delimiter_color = "\000F13\000|^\b\364\257K\267\300\303K\267dO\220\277\370M\220\277S\337<\267\370M\220\277" bar_color = "\000F00\000\257K\267\300\303K\267\020\000\000\000\200\273\\\bT\361<\267\200\273\\\b\300\303K\267" result = 0x85aaba8 "\031F16weechat" str_attr = "\000\344<\267\070N\220\277" length = 12 ptr_item = 0x8325310 ptr_plugin = 0x0 #8 0x08074f11 in gui_bar_window_content_build_item ( bar_window=0x8326be0, window=0x8325d28, index_item=7, index_subitem=0) at /usr/local/src/weechat/src/gui/gui-bar-window.c:554 No locals. #9 0x08074fc2 in gui_bar_window_content_build ( bar_window=0x8326be0, window=0x8325d28) at /usr/local/src/weechat/src/gui/gui-bar-window.c:582 i = 7 j = 0 #10 0x08069f1e in gui_window_switch_to_buffer ( window=0x8325d28, buffer=0x8325858, set_last_read=0) at /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1099 ptr_bar_window = 0x8326be0 old_buffer = 0x8325858 #11 0x0806767e in gui_main_refreshs () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:273 ptr_win = 0x8325d28 ptr_buffer = 0x0 ptr_bar = 0x0 #12 0x08067871 in gui_main_loop () at /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:358 hook_fd_keyboard = 0x832b748 tv_timeout = {tv_sec = 0, tv_usec = 219000} read_fds = {fds_bits = {65, 0 <repeats 31 times>}} write_fds = {fds_bits = {0 <repeats 32 times>}} except_fds = {fds_bits = {0 <repeats 32 times>}} max_fd = 6 ready = -1 #13 0x08099d2d in main (argc=3, argv=0xbf905174) at /usr/local/src/weechat/src/core/weechat.c:475 No locals. (gdb)
Backtrace of the resize crash:
======= WeeChat backtrace ======= (written by weechat 0.3.7-dev, compiled on Feb 5 2012 15:32:44) 001 /usr/local/src/weechat/src/core/wee-backtrace.c:167 [function weechat_backtrace] 002 /usr/local/src/weechat/src/core/wee-debug.c:168 [function debug_sigsegv] 003 ??:0 [function ??] 004 /usr/local/src/weechat/src/gui/gui-bar-item.c:309 [function gui_bar_item_get_value] 005 /usr/local/src/weechat/src/gui/gui-bar-window.c:553 [function gui_bar_window_content_build_item] 006 /usr/local/src/weechat/src/gui/gui-bar-window.c:580 [function gui_bar_window_content_build] 007 /usr/local/src/weechat/src/gui/curses/gui-curses-window.c:1100 [function gui_window_switch_to_buffer] 008 /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:274 [function gui_main_refreshs] 009 /usr/local/src/weechat/src/gui/curses/gui-curses-main.c:359 [function gui_main_loop] 010 /usr/local/src/weechat/src/core/weechat.c:477 [function main] 011 ??:0 [function ??] 012 ??:0 [function _start] ======= End of backtrace =======
I'm fairly certain this bug was already present in 0.3.0, as I've been randomly experiencing it for as long as I've been using WeeChat and iset.pl.
For quite some time now I've been having random issues with iset and zooming, often leaving my WeeChat either in an unusable state (all windows displaying the iset buffer and no way to get rid of it) or even crashing my WeeChat. I've finally been able to reproduce it for myself on 2 different remote Ubuntu hosts, connected via MinTTY (though I've experienced the bug with PuTTY as SSH/Terminal client too), using a clean WeeChat environment. Basically this happens when zooming in and out of the iset.pl buffer while it is in a very small WeeChat window. Steps to reproduce: 1. Resize your terminal window to a small size (for instance 50 columns by 15 rows) (see notes) 2. Start a clean WeeChat which only has the iset.pl script loaded 3. /window splith 4. /iset foobar (at this point iset should be in 1 window and the weechat core buffer in the other) 5. /window zoom 6. /window zoom Now you should see the iset buffer in both windows. Also, trying to switch buffers (/buffer 1) will lead to nothing. Closing the iset buffer (/close) will most likely also not work and /quit is the only way out. Occasionally, when this occurs in my general setup, it will even crash. I took screenshots along the way: http://fixato.org/screenshots/isetbug/ Notes: 1. I've used a very small terminal window here as it makes it easier to reproduce. In my normal setup I use a much larger terminal window (160 Columns by 75 Rows), but with many more /window splits and I found it usually only occurs in a small WeeChat window. 2. While I use iset.pl to show this bug, my gut feeling says it could possibly happen with any 'free' window. 3. Probably a different bug, but when resizing the terminal window, WeeChat occasionally also gets a SIGSEGV. 4. When all windows are showing the iset.pl buffer as a result of this bugged state, I've tried resetting the window layout, closing the iset buffer, unloading the iset script, merging windows and changing the /buffer, but all without any result.
(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)
Attach Files: Comment:
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Only logged-in users can vote.
Please enter the title of George Orwell's famous dystopian book (it's a date):
Follow 5 latest changes.
Copyright © 2023 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. The Levitating, Meditating, Flute-playing Gnu logo is a GNU GPL'ed image provided by the Nevrax Design Team. Source Code
Powered by Savane 3.11