poke-devel
[Top][All Lists]
Advanced

[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)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]