[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
tab completion broken
From: |
Bruno Haible |
Subject: |
tab completion broken |
Date: |
Fri, 01 May 2020 10:36:00 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-177-generic; KDE/5.18.0; x86_64; ; ) |
Hi all,
Tab completion in the repl loop appears broken right now.
The daily builds on https://gitlab.com/gnu-poke/ci-distcheck/pipelines
started failing yesterday, with 2 test failures:
Running
/builds/gnu-poke/ci-distcheck/poke/poke-0.1-20200430-beta/testsuite/poke.repl/repl.exp
...
FAIL: tab-completion-1 (timeout)
FAIL: tab-completion-2 (timeout)
The cause must have been some commits on 2020-04-29 (since it's a daily build).
What do the two tests look like?
set test "tab-completion-1"
poke_start
poke_send ".se\t" ".set"
poke_exit
set test "tab-completion-2"
poke_start
poke_send ".e\t\t" "\r\n.editor .exit *\r\n$poke_prompt .e"
poke_exit
So let me try to run the first test interactively:
$ make
$ make install [needed because src/poke without 'make install' crashes
(*)]
$ poke
.se<TAB>
Here the process starts to eat more and more memory, making the system
unresponsive.
"ps aux" shows me a process with a virtual memory size of 9.2 GB. I was able to
interrupt it with Ctrl-Z. gdb shows these stack traces:
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7f489044b700 (LWP 10059) "poke" 0x00007f488f7d1767 in kill ()
at ../sysdeps/unix/syscall-template.S:84
2 Thread 0x7f488dedf700 (LWP 10060) "poke" pthread_cond_wait@@GLIBC_2.3.2
()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
3 Thread 0x7f488d6de700 (LWP 10061) "poke" pthread_cond_wait@@GLIBC_2.3.2
()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
4 Thread 0x7f488cedd700 (LWP 10062) "poke" pthread_cond_wait@@GLIBC_2.3.2
()
at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
5 Thread 0x7f488c6dc700 (LWP 10063) "poke" 0x00007f488f8995d3 in select ()
at ../sysdeps/unix/syscall-template.S:84
(gdb) thread 1
[Switching to thread 1 (Thread 0x7f489044b700 (LWP 10059))]
#0 0x00007f488f7d1767 in kill () at ../sysdeps/unix/syscall-template.S:84
84 in ../sysdeps/unix/syscall-template.S
(gdb) backtrace
#0 0x00007f488f7d1767 in kill () at ../sysdeps/unix/syscall-template.S:84
#1 0x00007f488fdaaac2 in ?? () from /lib/x86_64-linux-gnu/libreadline.so.6
#2 0x00007f488fd9f476 in rl_completion_matches () from
/lib/x86_64-linux-gnu/libreadline.so.6
#3 0x00007f488fd9f576 in ?? () from /lib/x86_64-linux-gnu/libreadline.so.6
#4 0x00007f488fd9f702 in rl_complete_internal () from
/lib/x86_64-linux-gnu/libreadline.so.6
#5 0x00007f488fd96990 in _rl_dispatch_subseq () from
/lib/x86_64-linux-gnu/libreadline.so.6
#6 0x00007f488fd96e12 in readline_internal_char () from
/lib/x86_64-linux-gnu/libreadline.so.6
#7 0x00007f488fd97545 in readline () from
/lib/x86_64-linux-gnu/libreadline.so.6
#8 0x0000000000405697 in pk_repl () at pk-repl.c:265
#9 0x0000000000404ddd in main (argc=<optimized out>, argv=<optimized out>) at
poke.c:494
(gdb) thread 5
[Switching to thread 5 (Thread 0x7f488c6dc700 (LWP 10063))]
#0 0x00007f488f8995d3 in select () at ../sysdeps/unix/syscall-template.S:84
84 ../sysdeps/unix/syscall-template.S: Datei oder Verzeichnis nicht
gefunden.
(gdb) backtrace
#0 0x00007f488f8995d3 in select () at ../sysdeps/unix/syscall-template.S:84
#1 0x0000000000408984 in hserver_thread_worker (data=<optimized out>) at
pk-hserver.c:218
#2 0x00007f488fb6d6ba in start_thread (arg=0x7f488c6dc700) at
pthread_create.c:333
#3 0x00007f488f8a341d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
I am using libreadline6.
Most likely the cause is in the completion hooks defined in pk-repl.c.
Bruno
(*)
$ src/poke
/media/develdata/devel/inst-x86_64-64/share/poke/std.pk:45:30: error: invalid
unit in offset type
deftype off64 = offset<int64,b>;
^
Speicherzugriffsfehler (Speicherabzug geschrieben)
- tab completion broken,
Bruno Haible <=