Skip to content

Crash on completition - Unicode boundary bug #55

@colonelx

Description

@colonelx

It breaks on Cyrillic letters. Error: end of range should be a character boundary

Reason

Cyrillic characters in UTF-8 are encoded using 2 bytes per character.

locale:

LANG=bg_BG.UTF-8
LC_CTYPE="bg_BG.UTF-8"
LC_NUMERIC="bg_BG.UTF-8"
LC_TIME="bg_BG.UTF-8"
LC_COLLATE="bg_BG.UTF-8"
LC_MONETARY="bg_BG.UTF-8"
LC_MESSAGES="bg_BG.UTF-8"
LC_PAPER="bg_BG.UTF-8"
LC_NAME="bg_BG.UTF-8"
LC_ADDRESS="bg_BG.UTF-8"
LC_TELEPHONE="bg_BG.UTF-8"
LC_MEASUREMENT="bg_BG.UTF-8"
LC_IDENTIFICATION="bg_BG.UTF-8"
LC_ALL=

Log

 �[1m[�[31mERROR�[0m	]�[0m �[36msrc/main.rs�[0m: panicked at src/bash_server.rs:26:33:
called `Result::unwrap()` on an `Err` value: RecvError
�[1m[�[31mERROR�[0m	]�[0m �[36msrc/main.rs�[0m: panicked at src/mainloop.rs:1008:20:
end of range should be a character boundary
�[1m[�[31mERROR�[0m	]�[0m �[36msrc/main.rs�[0m:    0:     0x55eb1a5ba4df - backtrace[f094e2566e6eba7b]::backtrace::libunwind::trace
                               at /data/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.66/src/backtrace/libunwind.rs:93:5
                           backtrace[f094e2566e6eba7b]::backtrace::trace_unsynchronized::<<backtrace[f094e2566e6eba7b]::capture::Backtrace>::create::{closure#0}>
                               at /data/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.66/src/backtrace/mod.rs:66:5
                           backtrace[f094e2566e6eba7b]::backtrace::trace::<<backtrace[f094e2566e6eba7b]::capture::Backtrace>::create::{closure#0}>
                               at /data/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.66/src/backtrace/mod.rs:53:14
                           <backtrace[f094e2566e6eba7b]::capture::Backtrace>::create
                               at /data/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.66/src/capture.rs:176:9
                           <backtrace[f094e2566e6eba7b]::capture::Backtrace>::new
                               at /data/viktor/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/backtrace-0.3.66/src/capture.rs:140:22
   1:     0x55eb1a53dd9d - nsh[4697820c212381d0]::main::{closure#0}
                               at /usr/src/debug/nsh-git/nsh/src/main.rs:187:25
   2:     0x55eb1a644ddf - <alloc[d7a0dcdcba99736a]::boxed::Box<dyn for<'a, 'b> core[94ad8b403119b81d]::ops::function::Fn<(&'a std[151076651bcecd14]::panic::PanicHookInfo<'b>,), Output = ()> + core[94ad8b403119b81d]::marker::Send + core[94ad8b403119b81d]::marker::Sync> as core[94ad8b403119b81d]::ops::function::Fn<(&std[151076651bcecd14]::panic::PanicHookInfo,)>>::call
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/alloc/src/boxed.rs:2220:9
                           std[151076651bcecd14]::panicking::panic_with_hook
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/std/src/panicking.rs:833:13
   3:     0x55eb1a66d608 - std[151076651bcecd14]::panicking::panic_handler::{closure#0}
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/std/src/panicking.rs:691:13
   4:     0x55eb1a66d589 - std[151076651bcecd14]::sys::backtrace::__rust_end_short_backtrace::<std[151076651bcecd14]::panicking::panic_handler::{closure#0}, !>
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/std/src/sys/backtrace.rs:182:18
   5:     0x55eb1a66db2c - __rustc[fb814a8b796c654f]::rust_begin_unwind
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/std/src/panicking.rs:689:5
   6:     0x55eb1a60b13b - core[94ad8b403119b81d]::panicking::panic_fmt
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/core/src/panicking.rs:80:14
   7:     0x55eb1a571d08 - <alloc[d7a0dcdcba99736a]::string::String>::replace_range::<core[94ad8b403119b81d]::ops::range::Range<usize>>
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/alloc/src/string.rs:2086:9
                           <nsh[4697820c212381d0]::mainloop::UserInput>::replace_range
                               at /usr/src/debug/nsh-git/nsh/src/mainloop.rs:1008:20
                           <nsh[4697820c212381d0]::mainloop::Mainloop>::select_completion
                               at /usr/src/debug/nsh-git/nsh/src/mainloop.rs:722:28
   8:     0x55eb1a5738d6 - <nsh[4697820c212381d0]::mainloop::Mainloop>::update_completion_entries
                               at /usr/src/debug/nsh-git/nsh/src/mainloop.rs:686:18
   9:     0x55eb1a56cdc1 - <nsh[4697820c212381d0]::mainloop::Mainloop>::handle_event
                               at /usr/src/debug/nsh-git/nsh/src/mainloop.rs:283:22
  10:     0x55eb1a54adaf - <nsh[4697820c212381d0]::mainloop::Mainloop>::run
                               at /usr/src/debug/nsh-git/nsh/src/mainloop.rs:170:30
                           nsh[4697820c212381d0]::interactive_mode
                               at /usr/src/debug/nsh-git/nsh/src/main.rs:68:36
  11:     0x55eb1a54e8b3 - nsh[4697820c212381d0]::shell_main
                               at /usr/src/debug/nsh-git/nsh/src/main.rs:122:13
                           nsh[4697820c212381d0]::main
                               at /usr/src/debug/nsh-git/nsh/src/main.rs:200:5
  12:     0x55eb1a52b1e6 - <fn() as core[94ad8b403119b81d]::ops::function::FnOnce<()>>::call_once
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/core/src/ops/function.rs:250:5
                           std[151076651bcecd14]::sys::backtrace::__rust_begin_short_backtrace::<fn(), ()>
                               at /rustc/9e79395f92bff6a8f536430e42a4beae69f60ff8/library/std/src/sys/backtrace.rs:166:18
  13:     0x55eb1a5b0579 - main
  14:     0x7fcc6a9d26c1 - <unknown>
  15:     0x7fcc6a9d27f9 - __libc_start_main
  16:     0x55eb1a4fd2f5 - _start
  17:                0x0 - <unknown>
 �[1m[�[31mERROR�[0m	]�[0m �[36msrc/main.rs�[0m: panicked at src/bash_server.rs:26:33:
called `Result::unwrap()` on an `Err` value: RecvError

Steps to reproduce:

  1. Create folder named "Свалени"
  2. Type: ls Сва
  3. Press Tab
  4. nsh panics

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions