Loading ...
Sorry, an error occurred while loading the content.
 

Adding a certain multibyte character to isprint causes a segfault.

Expand Messages
  • Raúl Núñez de Arenas Coronado
    Hi Bram :) Easy to reproduce: $ vim -u NONE [Vim starts] ... For the above I use to enter the digraph, then Sb for Small bullet. As soon as you hit
    Message 1 of 10 , Oct 29, 2009
      Hi Bram :)

      Easy to reproduce:
      $ vim -u NONE
      [Vim starts]
      :set isprint=∙

      For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
      bullet. As soon as you hit enter after the above:
      Vim: Caught deadly signal SEGV
      Vim: Finished
      [1] 29734 segmentation fault vim -u NONE

      It happens with other digraphs, probably all above u+00ff but I haven't
      tested thorougly.

      My version of Vim


      VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 22 2009 12:06:16)
      Included patches: 1-267
      Compiled by DervishD <raul@...>
      Huge version without GUI. Features included (+) or not (-):
      +arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset
      +cindent +clientserver +clipboard +cmdline_compl +cmdline_hist
      +cmdline_info +comments +cryptv +cscope +cursorshape +dialog_con +diff
      +digraphs -dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi
      +file_in_path +find_in_path +float +folding -footer +fork() -gettext
      -hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall
      +linebreak +lispindent +listcmds +localmap +menu +mksession
      +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm -mouse_jsbterm
      +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte +multi_lang
      -mzscheme -netbeans_intg -osfiletype +path_extra +perl +postscript
      +printer +profile +python +quickfix +reltime +rightleft -ruby
      +scrollbind +signs +smartindent -sniff +statusline -sun_workshop +syntax
      +tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse
      +textobjects +title -toolbar +user_commands +vertsplit +virtualedit
      +visual +visualextra +viminfo +vreplace +wildignore +wildmenu +windows
      +writebackup +X11 +xfontset -xim +xsmp_interact +xterm_clipboard
      -xterm_save
      system vimrc file: "$VIM/vimrc"
      user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
      fall-back for $VIM: "/usr/local/share/vim"

      Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2
      -D_FORTIFY_SOURCE=1 -D_REENTRANT -D_GNU_SOURCE -DDEBIAN
      -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
      -I/usr/lib/perl/5.10/CORE -I/usr/include/python2.6 -pthread

      Linking: gcc -Wl,-E -L/usr/local/lib -o vim -lXt -lncurses -Wl,-E
      -L/usr/local/lib -L/usr/lib/perl/5.10/CORE -lperl
      -L/usr/lib/python2.6/config -lpython2.6 -L/usr/lib -lz -lutil -lm
      -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions


      --
      Raúl "DervishD" Núñez de Arenas Coronado
      Linux Registered User 88736 | http://www.dervishd.net
      It's my PC and I'll cry if I want to... RAmen!

      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_dev" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • Tony Mechelynck
      ... [...] A crash means a bug; but this said, isprint is not meant to contain ... Best regards, Tony. -- Laugh at your problems; everybody else does.
      Message 2 of 10 , Oct 29, 2009
        On 29/10/09 10:17, Raúl Núñez de Arenas Coronado wrote:
        >
        > Hi Bram :)
        >
        > Easy to reproduce:
        > $ vim -u NONE
        > [Vim starts]
        > :set isprint=∙
        >
        > For the above I use<Ctrl-K> to enter the digraph, then "Sb" for Small
        > bullet. As soon as you hit enter after the above:
        > Vim: Caught deadly signal SEGV
        > Vim: Finished
        > [1] 29734 segmentation fault vim -u NONE
        >
        > It happens with other digraphs, probably all above u+00ff but I haven't
        > tested thorougly.
        >
        > My version of Vim
        >
        >
        > VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 22 2009 12:06:16)
        > Included patches: 1-267
        > Compiled by DervishD<raul@...>
        > Huge version without GUI. Features included (+) or not (-):
        [...]

        A crash means a bug; but this said, 'isprint' is not meant to contain
        _any_ character above 0xFF, see its help:

        > Multi-byte characters 256 and above are always included, only the
        > characters up to 255 are specified with this option. When a character
        > is printable but it is not available in the current font, a
        > replacement character will be shown.
        > Unprintable and zero-width Unicode characters are displayed as <xxxx>.
        > There is no option to specify these characters.


        Best regards,
        Tony.
        --
        Laugh at your problems; everybody else does.

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_dev" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Raúl Núñez de Arenas Coronado
        Saluton Tony :) ... [...] I did (I forgot to tell in my message), and that s why I reported the bug: it somewhat shocked me that being a known limitation of
        Message 3 of 10 , Oct 29, 2009
          Saluton Tony :)

          Tony Mechelynck <a...@...> skribis:
          > On 29/10/09 10:17, Raúl Núñez de Arenas Coronado wrote:
          >> Easy to reproduce:
          >> $ vim -u NONE
          >> [Vim starts]
          >> :set isprint=∙
          >
          > A crash means a bug; but this said, 'isprint' is not meant to contain
          > _any_ character above 0xFF, see its help:

          [...]

          I did (I forgot to tell in my message), and that's why I reported the
          bug: it somewhat shocked me that being a known limitation of "isprint",
          using a value out of the "legal" range caused a segfault and not an
          error message, which was what I expected.

          I haven't took a look at the sources yet, so I don't know if this is
          fixable at all or if "isprint" is interpreting ∙ as 0xe2, 0x88, 0x99,
          that is, three different characters under 0xff, and maybe one of them is
          causing the problem :?

          I don't think this weekend I will be able to check, but if I do I'll try
          to prepare a patch if I discover how to fix the bug.

          --
          Raúl "DervishD" Núñez de Arenas Coronado
          Linux Registered User 88736 | http://www.dervishd.net
          It's my PC and I'll cry if I want to... RAmen!

          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_dev" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • Tony Mechelynck
          ... I may be wrong, but my guess is that isprint should accept characters in encoding but not above 0xFF, which means that in UTF-8 (and UTF-8 only) they
          Message 4 of 10 , Oct 29, 2009
            On 29/10/09 19:24, Raúl Núñez de Arenas Coronado wrote:
            > Saluton Tony :)
            >
            > Tony Mechelynck<a...@...> skribis:
            >> On 29/10/09 10:17, Raúl Núñez de Arenas Coronado wrote:
            >>> Easy to reproduce:
            >>> $ vim -u NONE
            >>> [Vim starts]
            >>> :set isprint=∙
            >>
            >> A crash means a bug; but this said, 'isprint' is not meant to contain
            >> _any_ character above 0xFF, see its help:
            >
            > [...]
            >
            > I did (I forgot to tell in my message), and that's why I reported the
            > bug: it somewhat shocked me that being a known limitation of "isprint",
            > using a value out of the "legal" range caused a segfault and not an
            > error message, which was what I expected.
            >
            > I haven't took a look at the sources yet, so I don't know if this is
            > fixable at all or if "isprint" is interpreting ∙ as 0xe2, 0x88, 0x99,
            > that is, three different characters under 0xff, and maybe one of them is
            > causing the problem :?
            >
            > I don't think this weekend I will be able to check, but if I do I'll try
            > to prepare a patch if I discover how to fix the bug.
            >

            I may be wrong, but my guess is that 'isprint' should accept characters
            in 'encoding' but not above 0xFF, which means that in UTF-8 (and UTF-8
            only) they can be multibyte characters, but of no more than two bytes (a
            leader byte, 0xC2 or 0xC3, and a trailer byte in the range 0x80-0xBF)

            Best regards,
            Tony.
            --
            hundred-and-one symptoms of being an internet addict:
            169. You hire a housekeeper for your home page.

            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_dev" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          • Bram Moolenaar
            ... It s indeed easy to reproduce. I ll put it at the top of the todo list. -- TALL KNIGHT: We are now no longer the Knights Who Say Ni! ONE KNIGHT: Ni!
            Message 5 of 10 , Oct 29, 2009
              Raul wrote:

              > Hi Bram :)
              >
              > Easy to reproduce:
              > $ vim -u NONE
              > [Vim starts]
              > :set isprint=∙
              >
              > For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
              > bullet. As soon as you hit enter after the above:
              > Vim: Caught deadly signal SEGV
              > Vim: Finished
              > [1] 29734 segmentation fault vim -u NONE
              >
              > It happens with other digraphs, probably all above u+00ff but I haven't
              > tested thorougly.

              It's indeed easy to reproduce. I'll put it at the top of the todo list.

              --
              TALL KNIGHT: We are now no longer the Knights Who Say Ni!
              ONE KNIGHT: Ni!
              OTHERS: Sh!
              ONE KNIGHT: (whispers) Sorry.
              "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

              /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
              /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
              \\\ download, build and distribute -- http://www.A-A-P.org ///
              \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

              --~--~---------~--~----~------------~-------~--~----~
              You received this message from the "vim_dev" maillist.
              For more information, visit http://www.vim.org/maillist.php
              -~----------~----~----~----~------~----~------~--~---
            • Dominique Pellé
              ... I can reproduce it too. Not only with isprint as you describe, but also with isfname and isident . -- Dominique
              Message 6 of 10 , Oct 29, 2009
                Raúl Núñez de Arenas Coronado wrote:

                > Hi Bram :)
                >
                > Easy to reproduce:
                > $ vim -u NONE
                > [Vim starts]
                > :set isprint=*
                >
                > For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
                > bullet. As soon as you hit enter after the above:
                > Vim: Caught deadly signal SEGV
                > Vim: Finished


                I can reproduce it too. Not only with 'isprint' as you describe, but also
                with 'isfname' and 'isident'.

                -- Dominique

                --~--~---------~--~----~------------~-------~--~----~
                You received this message from the "vim_dev" maillist.
                For more information, visit http://www.vim.org/maillist.php
                -~----------~----~----~----~------~----~------~--~---
              • Jan Larres
                Hi Raúl, ... with my vim (7.2.245 under Linux) I get an error instead: E474: Invalid argument: isprint=∙ Maybe it got introduced by a patch in between our
                Message 7 of 10 , Oct 30, 2009
                  Hi Raúl,

                  * Raúl Núñez de Arenas Coronado (raulnac@...) wrote:
                  > Easy to reproduce:
                  > $ vim -u NONE
                  > [Vim starts]
                  > :set isprint=∙
                  >
                  > For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
                  > bullet. As soon as you hit enter after the above:
                  > Vim: Caught deadly signal SEGV
                  > Vim: Finished
                  > [1] 29734 segmentation fault vim -u NONE
                  >
                  > It happens with other digraphs, probably all above u+00ff but I haven't
                  > tested thorougly.
                  >
                  > My version of Vim
                  >
                  >
                  > VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 22 2009 12:06:16)
                  > Included patches: 1-267

                  with my vim (7.2.245 under Linux) I get an error instead:

                  E474: Invalid argument: isprint=∙

                  Maybe it got introduced by a patch in between our versions?

                  Jan

                  --
                  OpenPGP Key-ID: 00A0FD5F
                  "It's hard to be religious when certain people are never incinerated by
                  bolts of lightning." -- Calvin, "Calvin & Hobbes"

                  --~--~---------~--~----~------------~-------~--~----~
                  You received this message from the "vim_dev" maillist.
                  For more information, visit http://www.vim.org/maillist.php
                  -~----------~----~----~----~------~----~------~--~---
                • Lech Lorens
                  ... The problem was introduced by patch 7.2.252. Or actually it was not reproducible before 7.2.252 due to the fact that it was not possible to use multi-byte
                  Message 8 of 10 , Oct 30, 2009
                    On 30-Oct-2009 Jan Larres <lists@...> wrote:
                    >
                    > Hi Raúl,
                    >
                    > * Raúl Núñez de Arenas Coronado (raulnac@...) wrote:
                    > > Easy to reproduce:
                    > > $ vim -u NONE
                    > > [Vim starts]
                    > > :set isprint=∙
                    > >
                    > > For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
                    > > bullet. As soon as you hit enter after the above:
                    > > Vim: Caught deadly signal SEGV
                    > > Vim: Finished
                    > > [1] 29734 segmentation fault vim -u NONE
                    > >
                    > > It happens with other digraphs, probably all above u+00ff but I haven't
                    > > tested thorougly.
                    > >
                    > > My version of Vim
                    > >
                    > >
                    > > VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 22 2009 12:06:16)
                    > > Included patches: 1-267
                    >
                    > with my vim (7.2.245 under Linux) I get an error instead:
                    >
                    > E474: Invalid argument: isprint=∙
                    >
                    > Maybe it got introduced by a patch in between our versions?
                    >
                    > Jan

                    The problem was introduced by patch 7.2.252. Or actually it was not
                    reproducible before 7.2.252 due to the fact that it was not possible to
                    use multi-byte characters at all.

                    The attached patch fixes the problem. Additionally, it allows to specify
                    a range of multi-byte characters, e.g.:
                    :set isp=ð-÷

                    --
                    Cheers,
                    Lech

                    --~--~---------~--~----~------------~-------~--~----~
                    You received this message from the "vim_dev" maillist.
                    For more information, visit http://www.vim.org/maillist.php
                    -~----------~----~----~----~------~----~------~--~---
                  • Raúl Núñez de Arenas Coronado
                    Saluton Dominique :) ... I noticed this morning, while taking a look at the sources, just to check that other is- options were not affected. The good news
                    Message 9 of 10 , Oct 31, 2009
                      Saluton Dominique :)

                      Dominique Pellé <d...@...> skribis:
                      > Raúl Núñez de Arenas Coronado wrote:
                      >>
                      >> Easy to reproduce:
                      >> $ vim -u NONE
                      >> [Vim starts]
                      >> :set isprint=*
                      >>
                      >> For the above I use <Ctrl-K> to enter the digraph, then "Sb" for
                      >> Small bullet. As soon as you hit enter after the above: Vim: Caught
                      >> deadly signal SEGV Vim: Finished
                      >
                      > I can reproduce it too.  Not only with 'isprint' as you describe, but
                      > also with 'isfname' and 'isident'.

                      I noticed this morning, while taking a look at the sources, just to
                      check that other "is-" options were not affected. The good news are that
                      Lech Lorens found the problem and made a patch! :)

                      Thanks a lot, Lech!

                      --
                      Raúl "DervishD" Núñez de Arenas Coronado
                      Linux Registered User 88736 | http://www.dervishd.net
                      It's my PC and I'll cry if I want to... RAmen!

                      --~--~---------~--~----~------------~-------~--~----~
                      You received this message from the "vim_dev" maillist.
                      For more information, visit http://www.vim.org/maillist.php
                      -~----------~----~----~----~------~----~------~--~---
                    • Bram Moolenaar
                      ... Thanks Lech! -- Why isn t there mouse-flavored cat food? /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net /// sponsor Vim,
                      Message 10 of 10 , Oct 31, 2009
                        Lech Lorens wrote:

                        > > Hi Raúl,
                        > >
                        > > * Raúl Núñez de Arenas Coronado (raulnac@...) wrote:
                        > > > Easy to reproduce:
                        > > > $ vim -u NONE
                        > > > [Vim starts]
                        > > > :set isprint=∙
                        > > >
                        > > > For the above I use <Ctrl-K> to enter the digraph, then "Sb" for Small
                        > > > bullet. As soon as you hit enter after the above:
                        > > > Vim: Caught deadly signal SEGV
                        > > > Vim: Finished
                        > > > [1] 29734 segmentation fault vim -u NONE
                        > > >
                        > > > It happens with other digraphs, probably all above u+00ff but I haven't
                        > > > tested thorougly.
                        > > >
                        > > > My version of Vim
                        > > >
                        > > >
                        > > > VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Oct 22 2009 12:06:16)
                        > > > Included patches: 1-267
                        > >
                        > > with my vim (7.2.245 under Linux) I get an error instead:
                        > >
                        > > E474: Invalid argument: isprint=∙
                        > >
                        > > Maybe it got introduced by a patch in between our versions?
                        > >
                        > > Jan
                        >
                        > The problem was introduced by patch 7.2.252. Or actually it was not
                        > reproducible before 7.2.252 due to the fact that it was not possible to
                        > use multi-byte characters at all.
                        >
                        > The attached patch fixes the problem. Additionally, it allows to specify
                        > a range of multi-byte characters, e.g.:
                        > :set isp=ð-÷

                        Thanks Lech!


                        --
                        Why isn't there mouse-flavored cat food?

                        /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                        /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
                        \\\ download, build and distribute -- http://www.A-A-P.org ///
                        \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

                        --~--~---------~--~----~------------~-------~--~----~
                        You received this message from the "vim_dev" maillist.
                        For more information, visit http://www.vim.org/maillist.php
                        -~----------~----~----~----~------~----~------~--~---
                      Your message has been successfully submitted and would be delivered to recipients shortly.