Subject: Re: bug#49261: 28.0.50; File Locking Breaks Presumptuous Toolchains

From: Eli Zaretskii <[email-masked]>
Date: Thu, 08 Jul 2021 09:17:15 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Wed, 07 Jul 2021 22:55:08 +0200
> 
> Lars Ingebrigtsen <[email-masked]> writes:
> 
> > Still investigating...  perhaps I got the lifecycle of a variable wrong
> > or something?
> 
> It only happens with an -O2 build -- an -O0 build works fine.  Here's
> what gdb says:
> 
> #0  0x00005555557103a7 in AREF (idx=23456123314108, array=0x7ffff1a398cd)
>     at lisp.h:731
> #1  HASH_KEY (idx=11728061657054, h=0x7ffff1a39848) at lisp.h:2374
> #2  hash_lookup (h=0x7ffff1a39848, key=0x555555cae444, hash=hash@entry=0x0)
>     at fns.c:4479
> #3  0x000055555573f9f2 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>)
>     at bytecode.c:1415
> #4  0x0000555555701d07 in Ffuncall (nargs=2, args=args@entry=0x7fffffffcec8)
>     at eval.c:3055
> #5  0x000055555573d1c8 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>)
>     at bytecode.c:632
> #6  0x0000555555701d07 in Ffuncall (nargs=1, args=args@entry=0x7fffffffd790)
>     at eval.c:3055
> #7  0x000055555573d1c8 in exec_byte_code
>     (bytestr=<optimized out>, vector=<optimized out>, maxdepth=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>)
>     at bytecode.c:632
> #8  0x000055555570502f in apply_lambda
>     (fun=0x7ffff1a23485, args=<optimized out>, count=4) at eval.c:3188
> #9  0x00005555557040b3 in eval_sub (form=<optimized out>) at eval.c:2591
> #10 0x0000555555705cd9 in Feval (form=0x7ffff1fc6b23, lexical=<optimized out>)
>     at eval.c:2343
> #11 0x0000555555700da7 in internal_condition_case
>     (bfun=bfun@entry=0x5555556872a0 <top_level_2>, handlers=handlers@entry=0x90, hfun=hfun@entry=0x55555568ccf0 <cmd_error>) at eval.c:1478
> #12 0x0000555555687f26 in top_level_1 (ignore=ignore@entry=0x0)
>     at keyboard.c:1111
> #13 0x00005555557032a3 in internal_catch
>     (tag=tag@entry=0xe610, func=func@entry=0x555555687f00 <top_level_1>, arg=arg@entry=0x0) at eval.c:1198
> #14 0x0000555555687228 in command_loop () at lisp.h:1002
> #15 0x000055555568c906 in recursive_edit_1 () at keyboard.c:720
> #16 0x000055555568cc32 in Frecursive_edit () at keyboard.c:789
> #17 0x00005555555a286f in main (argc=13, argv=<optimized out>) at emacs.c:2308
> 
> 
> Which isn't very useful.
> 
> (gdb) xbacktrace 
> "command-line-1" (0xffffcee0)
> "command-line" (0xffffd7a8)
> "normal-top-level" (0xffffdc70)

Can you show the form being evaluated in frame #10?  Like this:

  (gdb) fr 10
  (gdb) pp form