Subject: 29.1; Dictionary-search on Windows : wrong-type-argument stringp nil in dictionary-read-reply-and-split()
From: Paul van Gelder <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Wed, 30 Aug 2023 16:57:02 +0200 (CEST)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

Apologies in advance if I am doing something wrong; this is the first time I am reporting an Emacs bug. I've checked https://www.emacswiki.org/emacs/EmacsBugTracker for what to do, but I am sure I may have missed something.

I've checked https://debbugs.gnu.org/cgi/pkgreport.cgi?include=subject%3Adictionary;package=emacs and searched for dictionary, and it seems the below bug has not yet been reported.

The following bug occurs/doesn't occur as follows, which makes me think it may be due to Windows OS:
- Windows, emacs 29.1, my config -> bug
- Windows, emacs 29.1, -Q -> bug
- MacOS, emacs 30.0.50, -Q -> no bug, works fine

When I start emacs -Q, I do the following to reliably recreate the bug:
M-x dictionary-search RET Hello RET

I have been trying:
M-x trace-function RET dictionary-do-search RET

followed by:
M-x dictionary-search RET Hello RET

to find out more, but it didn't help me as it seems in all 3 scenarios the parameter sare exactly the same:
"Hello" "*" and dictionary-display-search-result

I also read dictionary-read-reply-and-split() in dictionary.el as well as dictionary-read-reply, dictionary-split-string, but my elisp knowledge is not good enough to understand what's going on, but I am guessing either 'reply' or 'reply-list' are empty while expecting a string? Not sure how I could check further and help find a patch.

Please let me know if there's additional steps I can take to try and find out the problem/find a solution.

Thanks for all your work,

Paul

* Backtrace
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  dictionary-read-reply-and-split()
  dictionary-do-search("Hello" "*" dictionary-display-search-result)
  dictionary-new-search-internal("Hello" "*" dictionary-display-search-result)
  dictionary-new-search(("Hello" . "*"))
  dictionary-search("Hello" "*")
  funcall-interactively(dictionary-search "Hello" "*")
  command-execute(dictionary-search record)
  execute-extended-command(nil "dictionary-search" "dictionary-search")
  funcall-interactively(execute-extended-command nil "dictionary-search" "dictionary-search")
  command-execute(execute-extended-command)

* Bug report text
In GNU Emacs 29.1 (build 2, x86_64-w64-mingw32) of 2023-07-31 built on
 AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.19045
System Description: Microsoft Windows 10 Enterprise (v10.0.2009.19045.3324)

Configured using:
 'configure --with-modules --without-dbus --with-native-compilation=aot
 --without-compress-install --with-tree-sitter CFLAGS=-O2'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

(NATIVE_COMP present but libgccjit not available)

Important settings:
  value of $LANG: ENG
  locale-coding-system: cp1252

Major mode: Debugger

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util text-property-search time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-fns radix-tree
cl-print debug backtrace help-mode find-func cus-start cus-load
network-stream puny nsm auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
dictionary dictionary-connection cl-loaddefs cl-lib rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table
term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 85524 10022)
 (symbols 48 8183 0)
 (strings 32 24061 1514)
 (string-bytes 1 696686)
 (vectors 16 16384)
 (vector-slots 8 350534 14674)
 (floats 8 51 45)
 (intervals 56 316 0)
 (buffers 984 15))