2016-04-30 22:17 GMT+09:00 Bram Moolenaar <[email protected]>: > > Kelvin Lee wrote: > > > Patch 7.4.1784 is problematic. > > > > On both FreeBSD (10.3) and Linux (Ubuntu 16.04), the follow error would > happen upon starting gvim: > > > > X Error of failed request: BadValue (integer parameter out of range for > operation) > > Major opcode of failed request: 91 (X_QueryColors) > > Value in failed request: 0xffffd499 > > Serial number of failed request: 1159 > > Current serial number in output stream: 1159 > > E852: The child process failed to start the GUI > > Press ENTER or type command to continue[xcb] Unknown sequence number > while processing queue > > [xcb] Most likely this is a multi-threaded client and XInitThreads has > not been called > > [xcb] Aborting, sorry about that. > > Assertion failed: (! xcb_xlib_threads_sequence_lost), function > poll_for_event, file xcb_io.c, line 274. > > Vim: Caught deadly signal ABRT > > > > Vim: Finished. > > Abort trap (core dumped) > > > > My gvim build version info: > > > > VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Apr 30 2016 15:28:24) > > Included patches: 1-1784 > > Compiled by kiyo@zion > > Big version with X11-Athena GUI. Features included (+) or not (-): > > +acl +farsi +mouse_netterm +tag_binary > > +arabic +file_in_path +mouse_sgr +tag_old_static > > +autocmd +find_in_path +mouse_sysmouse -tag_any_white > > +balloon_eval +float +mouse_urxvt -tcl > > +browse +folding +mouse_xterm +terminfo > > ++builtin_terms -footer +multi_byte +termresponse > > +byte_offset +fork() +multi_lang +termtruecolor > > +channel +gettext -mzscheme +textobjects > > +cindent -hangul_input +netbeans_intg +timers > > +clientserver +iconv +packages +title > > +clipboard +insert_expand +path_extra +toolbar > > +cmdline_compl +job -perl +user_commands > > +cmdline_hist +jumplist +persistent_undo +vertsplit > > +cmdline_info +keymap +postscript +virtualedit > > +comments +langmap +printer +visual > > +conceal +libcall -profile +visualextra > > +cryptv +linebreak -python +viminfo > > +cscope +lispindent -python3 +vreplace > > +cursorbind +listcmds +quickfix +wildignore > > +cursorshape +localmap +reltime +wildmenu > > +dialog_con_gui -lua +rightleft +windows > > +diff +menu -ruby +writebackup > > +digraphs +mksession +scrollbind +X11 > > -dnd +modify_fname +signs +xfontset > > -ebcdic +mouse +smartindent +xim > > +emacs_tags +mouseshape +startuptime +xsmp_interact > > +eval +mouse_dec +statusline +xterm_clipboard > > +ex_extra -mouse_gpm -sun_workshop -xterm_save > > +extra_search -mouse_jsbterm +syntax +xpm > > system vimrc file: "$VIM/vimrc" > > user vimrc file: "$HOME/.vimrc" > > 2nd user vimrc file: "~/.vim/vimrc" > > user exrc file: "$HOME/.exrc" > > system gvimrc file: "$VIM/gvimrc" > > user gvimrc file: "$HOME/.gvimrc" > > 2nd user gvimrc file: "~/.vim/gvimrc" > > system menu file: "$VIMRUNTIME/menu.vim" > > fall-back for $VIM: "/usr/local/share/vim" > > Compilation: /usr/local/libexec/ccache/clang -c -I. -Iproto > -DHAVE_CONFIG_H -DFEAT_GUI_ATHENA -I/usr/local/include -g -O2 > -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 > > Linking: /usr/local/libexec/ccache/clang -L/usr/local/lib > -Wl,--as-needed -o vim -lXaw -lXmu -lXext -lXt -lSM -lICE -lXpm -lXt -lX11 > -lm -ltinfo -liconv -lintl > > I can reproduce it when building with Athena. >
As indicated in the report above, the direct cause of the problem is to pass, `INVALCOLOR` (= -11111 = 0xffffd499) to `XQueryColor()` via the structure `XColor` in `gui_mch_get_rgb()` at gui_x11.c:3214. Although the type of the field `pixel` of `XColor` is unsigned long, the valid range of pixel values is supposed to be from 0 to 65535, inclusive. Obviously, `INVALCOLOR` is out of the range, thus the BadValue error. The problematic `INVALCOLOR` comes from the macro `GUI_MCH_GET_RGB()` which is used in `set_hl_attr()` at syntax.c:9194. `GUI_MCH_GET_RGB()` flips between `termgui_mch_get_rgb()` and `gui_mch_get_rgb()`, depending on the value of the boolean `gui.in_use` at runtime. Hence the trouble happens when `gui.in_use` is true (thus `gui_mch_get_rgb()` is selected) and the given pixel value is `INVALCOLOR`. The proposed patch is to prevent `INVALCOLOR` from being passed to `gui_mch_get_rgb()` by adding appropriate conditions when the function is invoked. N.B. This bug potensially affects the GTK+2 GUI because its `gui_mch_get_rgb()` uses `gdk_colorpmap_query_color()` and the latter calls `XQueryColor()` directly under certain conditions. Best regards, Kazunobu Kuriyama > > -- > BRIDGEKEEPER: What is your favorite colour? > LAUNCELOT: Blue. > BRIDGEKEEPER: Right. Off you go. > "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES > LTD > > /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net > \\\ > /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ > \\\ > \\\ an exciting new programming language -- http://www.Zimbu.org > /// > \\\ help me help AIDS victims -- http://ICCF-Holland.org > /// > > -- > -- > You received this message from the "vim_dev" maillist. > Do not top-post! Type your reply below the text you are replying to. > For more information, visit http://www.vim.org/maillist.php > > --- > You received this message because you are subscribed to the Google Groups > "vim_dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
athena-badvalue.patch
Description: Binary data
