Subject: Re: bug#670: bug#1077: 23.0.60; x-create-frame: (wrong-type-argument number-or-marker-p nil)

From: Eli Zaretskii <[email-masked]>
Date: Sun, 28 Nov 2010 02:21:32 -0500

> From: "Drew Adams" <[email-masked]>
> Cc: <[email-masked]>
> Date: Sat, 27 Nov 2010 15:32:49 -0800
> 
> (Note: there is a reproducible recipe from emacs -Q at the end.)

Thanks.  I tried it, but couldn't reproduce the problem.  Details
below.

> No, I cannot install GDB, but if you point me to a Windows binary for it I will
> be glad to try that.

Installing a Windows binary is what I meant.  You can find it here:

  http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/GDB/GDB-7.2/gdb-7.2-1-mingw32-bin.tar.lzma/download

Let me know once you have it installed.

> (I also get multiple crashes per day for the latest dev builds

It would be good to know a recipe for that.  If that's impossible,
perhaps after installing GDB you will be able to provide more info.

> why does the question asking whether I want to debug with GDB have
> `Yes' as the default value if I don't have GDB installed?

Because it doesn't check whether GDB is available.  Feel free to
submit a bug report about that.

> That obliges users to pick up the mouse and click `No' instead of
> just hitting RET.

Can't you do that with arrow keys?

> If you try to answer `Yes' you just get into trouble: That provokes
> a Microsoft error, letting you send lots of interesting info to MS
> for `GNU Emacs: The extensible self-documenting text editor'.  I.e.,
> `Yes' => `Send Error Report' or `Don't Send'.)

That's the default Windows GIT debugger in action.  You can download
and install DrMinGW, a JIT debugger that knows about MinGW, from here:

  http://code.google.com/p/jrfonseca/wiki/DrMingw

and then, if you answer NO, you will get a meaningful C-level
backtrace that you can save to a text file and attach to a mail
message.

> I guess you're speaking for yourself.  So I guess you already checked the
> possible places in that code where a `>' comparison is made, and could not see
> how any of them could end up trying to compare a nil arg.

There are too many possibilities, and I couldn't easily figure out
which one of the possible code paths would be taken by x-create-frame
in your setup.  Some of them call Lisp, but I couldn't find any calls
to < from the functions thus called, probably because I didn't look in
the right places.

> I tried that (looking at all occurrences of `>' in w32fns.c).  If the problem is
> really in that file (it isn't necessarily), then maybe one of the following
> lines is where the error gets raised.  (I'm using the C source code from the
> 23.2 release.)

No, C code cannot signal a Lisp error from native C comparisons with <
or >.  It must be some Lisp code, called directly or indirectly by
x-create-frame.

> runemacs.exe -Q --debug-init -l "hexrgb.el" -l "oneonone.el" -f "1on1-emacs"
> 
> 3. M-: (add-to-list 'load-path ".")
> 
> 4. M-x load-library icicles
> 
> 5. M-x icy-mode
> 
> 6. M-: (setq debug-on-error  t)
> 
> 7. C-h f  f o r w  TAB down down C-M-down

What is C-M-down?  On my Windows box I don't get any key event if I
press and hold Alt+Ctrl and type the down-arrow key.  Do you have some
non-default keyboard setup?  I used ESC C-down instead, is that the
right key? does ESC C-down trigger the bug on your machine?

Anyway, on my machine, with stock Emacs 23.2, I get a Lisp backtrace,
but a different one:

Debugger entered--Lisp error: (scan-error "Unbalanced parentheses" 31
32)
  scan-lists(28 1 -1)
  down-list(1)
  call-interactively(down-list nil nil)
  [...] <<<<<<<<<<<<<<<<<< few levels omitted here
  (setq val (completing-read (if fn ... "Describe function: ") obarray (quote fboundp) t nil nil (and fn ...)))
  (let ((fn ...) (enable-recursive-minibuffers t) val) (setq val (completing-read ... obarray ... t nil nil ...)) (list (if ... fn ...)))
  call-interactively(describe-function nil nil)

> That should be enough to bring up the backtrace.

Well, it doesn't for me, unfortunately.  I tried both Emacs 23.2 and a
recent build of 24.0.50, with the same result: I get the error about
unbalanced parentheses.

Are you sure that the exact Lisp files downloaded from the links you
posted reproduce the problem on your machine?  Maybe you have modified
versions of them.