unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Robert Pluim <rpluim@gmail.com>
To: Pip Cet <pipcet@gmail.com>
Cc: alan@idiocy.org, jguenther@gmail.com,
	Andrii Kolomoiets <andreyk.mad@gmail.com>,
	38748@debbugs.gnu.org
Subject: bug#38748: 28.0.50; crash on MacOS 10.15.2
Date: Wed, 08 Jan 2020 22:43:30 +0100	[thread overview]
Message-ID: <m2ftgpipz1.fsf@gmail.com> (raw)
In-Reply-To: <CAOqdjBcX++J_9Sy1ikNJmijYX=SP0VGArj8TPqXf86XOVT5Zsg@mail.gmail.com> (Pip Cet's message of "Wed, 8 Jan 2020 19:18:15 +0000")

[-- Attachment #1: Type: text/plain, Size: 2418 bytes --]

>>>>> On Wed, 8 Jan 2020 19:18:15 +0000, Pip Cet <pipcet@gmail.com> said:

    Pip> On Wed, Jan 8, 2020 at 5:40 PM Robert Pluim <rpluim@gmail.com> wrote:
    >> >> But I found the commit after which error is occurs:>     >> b2949d39261e82c33572ba8a250298ef0b165b95
    >> >>
    >> >> Commenting out that 'ok = false;' line make Emacs works without errors.
    >> 
    >> I can confirm this.

    Pip> I think we should disassemble the two versions and see where the
    Pip> differences are, unless this is too difficult because of inlining. Can
    Pip> you provide compiler details?

gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

Iʼve attached the disassembly of the two versions. They're very very
similar (this is with -g3 -O0).

    Eli> I cannot explain how that change could cause any harm.  Here's the
    Eli> relevant code fragment:

    Eli> So how could the initial value of 'ok' matter here?  What am I
    Eli> missing?

    Pip> I think it's likely to be the stack thing; the ok = false might make
    Pip> the difference between allocating inherited_attrs on the stack once
    Pip> and doing so once per recursion of face_inherited_attr. The latter
    Pip> case might lead to a stack overflow more easily.

The allocation of inherited_attrs is the same in both.

    >> Yes. Iʼll note that when this happens there are over 9000 stackframes,
    >> so perhaps itʼs stack exhaustion. macOS has a default stack of 8192
    >> kB, Iʼll see if increasing it helps.

    Pip> That does sound like infinite recursion, or infinite recursion waiting
    Pip> for something to change asynchronously that breaks the loop. If the
    Pip> "ok = false" prevents the compiler from recognizing
    Pip> face_inherited_attr is effectively tail-recursive, that might be it?

    Pip> Changing the line to "ok = true" would be an interesting experiment.

Hmm, yes. Iʼll try that.

BTW, running under lldb, last_marked can be accessed successfully, but
of course under lldb you donʼt get all the nice commands from
.gdbinit. Iʼd build a newer version of gdb, but signing binaries on
macOS is a real hassle.

Robert


[-- Attachment #2: modified.txt --]
[-- Type: text/plain, Size: 9885 bytes --]

Dump of assembler code for function face_inherited_attr:
xfaces.c:
2156	{
   0x000000010015fa50 <+0>:	push   %rbp
   0x000000010015fa51 <+1>:	mov    %rsp,%rbp
   0x000000010015fa54 <+4>:	sub    $0x130,%rsp
   0x000000010015fa5b <+11>:	mov    $0xa0,%eax
   0x000000010015fa60 <+16>:	mov    %eax,%r9d
   0x000000010015fa63 <+19>:	lea    -0xb0(%rbp),%r10
   0x000000010015fa6a <+26>:	mov    0x2a571f(%rip),%r11        # 0x100405190
   0x000000010015fa71 <+33>:	mov    (%r11),%r11
   0x000000010015fa74 <+36>:	mov    %r11,-0x8(%rbp)
   0x000000010015fa78 <+40>:	mov    %rdi,-0xb8(%rbp)
   0x000000010015fa7f <+47>:	mov    %rsi,-0xc0(%rbp)
   0x000000010015fa86 <+54>:	mov    %rdx,-0xc8(%rbp)
   0x000000010015fa8d <+61>:	mov    %ecx,-0xcc(%rbp)
   0x000000010015fa93 <+67>:	mov    %r8,-0xd8(%rbp)

2157	  Lisp_Object inherited_attrs[LFACE_VECTOR_SIZE];
2158	  Lisp_Object attr_val = attrs[attr_idx];
   0x000000010015fa9a <+74>:	mov    -0xc8(%rbp),%rdx
   0x000000010015faa1 <+81>:	mov    -0xcc(%rbp),%eax
   0x000000010015faa7 <+87>:	mov    %eax,%esi
   0x000000010015faa9 <+89>:	mov    (%rdx,%rsi,8),%rdx
   0x000000010015faad <+93>:	mov    %rdx,-0xe0(%rbp)

2159	
2160	  memcpy (inherited_attrs, attrs, LFACE_VECTOR_SIZE * sizeof (attrs[0]));
   0x000000010015fab4 <+100>:	mov    -0xc8(%rbp),%rdx
   0x000000010015fabb <+107>:	mov    %r10,%rdi
   0x000000010015fabe <+110>:	mov    %rdx,%rsi
   0x000000010015fac1 <+113>:	mov    %r9,%rdx
   0x000000010015fac4 <+116>:	callq  0x1003cfb12

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fac9 <+121>:	mov    -0xe0(%rbp),%rax
   0x000000010015fad0 <+128>:	mov    $0x45c,%edi
   0x000000010015fad5 <+133>:	mov    %rax,-0x100(%rbp)
   0x000000010015fadc <+140>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fae1 <+145>:	xor    %edi,%edi
   0x000000010015fae3 <+147>:	mov    %dil,%cl
   0x000000010015fae6 <+150>:	mov    -0x100(%rbp),%rdx
   0x000000010015faed <+157>:	cmp    %rax,%rdx

2162		 && !NILP (inherited_attrs[LFACE_INHERIT_INDEX])
   0x000000010015faf0 <+160>:	mov    %cl,-0x101(%rbp)
   0x000000010015faf6 <+166>:	jne    0x10015fb54 <face_inherited_attr+260>
   0x000000010015fafc <+172>:	xor    %edi,%edi
   0x000000010015fafe <+174>:	mov    -0x30(%rbp),%rax
   0x000000010015fb02 <+178>:	mov    %rax,-0x110(%rbp)
   0x000000010015fb09 <+185>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fb0e <+190>:	xor    %edi,%edi
   0x000000010015fb10 <+192>:	mov    %dil,%cl
   0x000000010015fb13 <+195>:	mov    -0x110(%rbp),%rdx
   0x000000010015fb1a <+202>:	cmp    %rax,%rdx

2163		 && !UNSPECIFIEDP (inherited_attrs[LFACE_INHERIT_INDEX]))
   0x000000010015fb1d <+205>:	mov    %cl,-0x101(%rbp)
   0x000000010015fb23 <+211>:	je     0x10015fb54 <face_inherited_attr+260>
   0x000000010015fb29 <+217>:	mov    -0x30(%rbp),%rax
   0x000000010015fb2d <+221>:	mov    $0x45c,%edi
   0x000000010015fb32 <+226>:	mov    %rax,-0x118(%rbp)
   0x000000010015fb39 <+233>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fb3e <+238>:	mov    -0x118(%rbp),%rcx
   0x000000010015fb45 <+245>:	cmp    %rax,%rcx
   0x000000010015fb48 <+248>:	sete   %dl
   0x000000010015fb4b <+251>:	xor    $0xff,%dl
   0x000000010015fb4e <+254>:	mov    %dl,-0x101(%rbp)
   0x000000010015fb54 <+260>:	mov    -0x101(%rbp),%al

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fb5a <+266>:	test   $0x1,%al
   0x000000010015fb5c <+268>:	jne    0x10015fb67 <face_inherited_attr+279>
   0x000000010015fb62 <+274>:	jmpq   0x10015fd07 <face_inherited_attr+695>

2164	    {
2165	      Lisp_Object parent_face = inherited_attrs[LFACE_INHERIT_INDEX];
   0x000000010015fb67 <+279>:	mov    -0x30(%rbp),%rax
   0x000000010015fb6b <+283>:	mov    %rax,-0xe8(%rbp)

2166	      bool ok;
2167	
2168	      if (CONSP (parent_face))
   0x000000010015fb72 <+290>:	mov    -0xe8(%rbp),%rax
   0x000000010015fb79 <+297>:	sar    $0x0,%rax
   0x000000010015fb7d <+301>:	mov    %eax,%ecx
   0x000000010015fb7f <+303>:	sub    $0x3,%ecx
   0x000000010015fb82 <+306>:	and    $0x7,%ecx
   0x000000010015fb85 <+309>:	cmp    $0x0,%ecx
   0x000000010015fb88 <+312>:	jne    0x10015fca6 <face_inherited_attr+598>

2169		{
2170		  Lisp_Object tail;
2171	//	  ok = false;
2172		  for (tail = parent_face; !NILP (tail); tail = XCDR (tail))
   0x000000010015fb8e <+318>:	mov    -0xe8(%rbp),%rax
   0x000000010015fb95 <+325>:	mov    %rax,-0xf8(%rbp)
   0x000000010015fb9c <+332>:	xor    %edi,%edi
   0x000000010015fb9e <+334>:	mov    -0xf8(%rbp),%rax
   0x000000010015fba5 <+341>:	mov    %rax,-0x120(%rbp)
   0x000000010015fbac <+348>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fbb1 <+353>:	mov    -0x120(%rbp),%rcx
   0x000000010015fbb8 <+360>:	cmp    %rax,%rcx
   0x000000010015fbbb <+363>:	sete   %dl
   0x000000010015fbbe <+366>:	xor    $0xff,%dl
   0x000000010015fbc1 <+369>:	test   $0x1,%dl
   0x000000010015fbc4 <+372>:	jne    0x10015fbcf <face_inherited_attr+383>
   0x000000010015fbca <+378>:	jmpq   0x10015fc8f <face_inherited_attr+575>
   0x000000010015fbcf <+383>:	xor    %r8d,%r8d
   0x000000010015fbd2 <+386>:	lea    -0xb0(%rbp),%rcx

2173		    {
2174		      ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs,
   0x000000010015fbd9 <+393>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fbe0 <+400>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fbe7 <+407>:	mov    -0xf8(%rbp),%rax
   0x000000010015fbee <+414>:	mov    -0x3(%rax),%rdx

2175						 false, named_merge_points);
   0x000000010015fbf2 <+418>:	mov    -0xd8(%rbp),%r9

2174		      ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs,
   0x000000010015fbf9 <+425>:	callq  0x100156d50 <get_lface_attributes>
   0x000000010015fbfe <+430>:	and    $0x1,%al
   0x000000010015fc00 <+432>:	mov    %al,-0xe9(%rbp)

2176		      if (!ok)
   0x000000010015fc06 <+438>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fc0d <+445>:	jne    0x10015fc18 <face_inherited_attr+456>

2177			break;
   0x000000010015fc13 <+451>:	jmpq   0x10015fc8f <face_inherited_attr+575>
   0x000000010015fc18 <+456>:	lea    -0xb0(%rbp),%rdx

2178		      attr_val = face_inherited_attr (w, f, inherited_attrs, attr_idx,
   0x000000010015fc1f <+463>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fc26 <+470>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fc2d <+477>:	mov    -0xcc(%rbp),%ecx

2179						      named_merge_points);
   0x000000010015fc33 <+483>:	mov    -0xd8(%rbp),%r8

2178		      attr_val = face_inherited_attr (w, f, inherited_attrs, attr_idx,
   0x000000010015fc3a <+490>:	callq  0x10015fa50 <face_inherited_attr>
   0x000000010015fc3f <+495>:	mov    %rax,-0xe0(%rbp)

2180		      if (!UNSPECIFIEDP (attr_val))
   0x000000010015fc46 <+502>:	mov    -0xe0(%rbp),%rax
   0x000000010015fc4d <+509>:	mov    $0x45c,%edi
   0x000000010015fc52 <+514>:	mov    %rax,-0x128(%rbp)
   0x000000010015fc59 <+521>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fc5e <+526>:	mov    -0x128(%rbp),%rdx
   0x000000010015fc65 <+533>:	cmp    %rax,%rdx
   0x000000010015fc68 <+536>:	je     0x10015fc73 <face_inherited_attr+547>

2181			break;
   0x000000010015fc6e <+542>:	jmpq   0x10015fc8f <face_inherited_attr+575>

2182		    }
   0x000000010015fc73 <+547>:	jmpq   0x10015fc78 <face_inherited_attr+552>

2172		  for (tail = parent_face; !NILP (tail); tail = XCDR (tail))
   0x000000010015fc78 <+552>:	mov    -0xf8(%rbp),%rax
   0x000000010015fc7f <+559>:	mov    0x5(%rax),%rax
   0x000000010015fc83 <+563>:	mov    %rax,-0xf8(%rbp)
   0x000000010015fc8a <+570>:	jmpq   0x10015fb9c <face_inherited_attr+332>

2183		  if (!ok)	/* bad face? */
   0x000000010015fc8f <+575>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fc96 <+582>:	jne    0x10015fca1 <face_inherited_attr+593>

2184		    break;
   0x000000010015fc9c <+588>:	jmpq   0x10015fd07 <face_inherited_attr+695>

2185		}
   0x000000010015fca1 <+593>:	jmpq   0x10015fd02 <face_inherited_attr+690>
   0x000000010015fca6 <+598>:	xor    %r8d,%r8d
   0x000000010015fca9 <+601>:	lea    -0xb0(%rbp),%rcx

2186	      else
2187		{
2188		  ok = get_lface_attributes (w, f, parent_face, inherited_attrs,
   0x000000010015fcb0 <+608>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fcb7 <+615>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fcbe <+622>:	mov    -0xe8(%rbp),%rdx

2189					     false, named_merge_points);
   0x000000010015fcc5 <+629>:	mov    -0xd8(%rbp),%r9

2188		  ok = get_lface_attributes (w, f, parent_face, inherited_attrs,
   0x000000010015fccc <+636>:	callq  0x100156d50 <get_lface_attributes>
   0x000000010015fcd1 <+641>:	and    $0x1,%al
   0x000000010015fcd3 <+643>:	mov    %al,-0xe9(%rbp)

2190		  if (!ok)
   0x000000010015fcd9 <+649>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fce0 <+656>:	jne    0x10015fceb <face_inherited_attr+667>

2191		    break;
   0x000000010015fce6 <+662>:	jmpq   0x10015fd07 <face_inherited_attr+695>

2192		  attr_val = inherited_attrs[attr_idx];
   0x000000010015fceb <+667>:	mov    -0xcc(%rbp),%eax
   0x000000010015fcf1 <+673>:	mov    %eax,%ecx
   0x000000010015fcf3 <+675>:	mov    -0xb0(%rbp,%rcx,8),%rcx
   0x000000010015fcfb <+683>:	mov    %rcx,-0xe0(%rbp)

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fd02 <+690>:	jmpq   0x10015fac9 <face_inherited_attr+121>

2193		}
2194	    }
2195	  return attr_val;
   0x000000010015fd07 <+695>:	mov    -0xe0(%rbp),%rax
   0x000000010015fd0e <+702>:	mov    0x2a547b(%rip),%rcx        # 0x100405190
   0x000000010015fd15 <+709>:	mov    (%rcx),%rcx
   0x000000010015fd18 <+712>:	mov    -0x8(%rbp),%rdx
   0x000000010015fd1c <+716>:	cmp    %rdx,%rcx
   0x000000010015fd1f <+719>:	mov    %rax,-0x130(%rbp)
   0x000000010015fd26 <+726>:	jne    0x10015fd3c <face_inherited_attr+748>
   0x000000010015fd2c <+732>:	mov    -0x130(%rbp),%rax
   0x000000010015fd33 <+739>:	add    $0x130,%rsp
   0x000000010015fd3a <+746>:	pop    %rbp
   0x000000010015fd3b <+747>:	retq   
   0x000000010015fd3c <+748>:	callq  0x1003cf4a6
   0x000000010015fd41 <+753>:	ud2    
End of assembler dump.

[-- Attachment #3: unmodified.txt --]
[-- Type: text/plain, Size: 9938 bytes --]

Dump of assembler code for function face_inherited_attr:
xfaces.c:
2156	{
   0x000000010015fa50 <+0>:	push   %rbp
   0x000000010015fa51 <+1>:	mov    %rsp,%rbp
   0x000000010015fa54 <+4>:	sub    $0x130,%rsp
   0x000000010015fa5b <+11>:	mov    $0xa0,%eax
   0x000000010015fa60 <+16>:	mov    %eax,%r9d
   0x000000010015fa63 <+19>:	lea    -0xb0(%rbp),%r10
   0x000000010015fa6a <+26>:	mov    0x2a571f(%rip),%r11        # 0x100405190
   0x000000010015fa71 <+33>:	mov    (%r11),%r11
   0x000000010015fa74 <+36>:	mov    %r11,-0x8(%rbp)
   0x000000010015fa78 <+40>:	mov    %rdi,-0xb8(%rbp)
   0x000000010015fa7f <+47>:	mov    %rsi,-0xc0(%rbp)
   0x000000010015fa86 <+54>:	mov    %rdx,-0xc8(%rbp)
   0x000000010015fa8d <+61>:	mov    %ecx,-0xcc(%rbp)
   0x000000010015fa93 <+67>:	mov    %r8,-0xd8(%rbp)

2157	  Lisp_Object inherited_attrs[LFACE_VECTOR_SIZE];
2158	  Lisp_Object attr_val = attrs[attr_idx];
   0x000000010015fa9a <+74>:	mov    -0xc8(%rbp),%rdx
   0x000000010015faa1 <+81>:	mov    -0xcc(%rbp),%eax
   0x000000010015faa7 <+87>:	mov    %eax,%esi
   0x000000010015faa9 <+89>:	mov    (%rdx,%rsi,8),%rdx
   0x000000010015faad <+93>:	mov    %rdx,-0xe0(%rbp)

2159	
2160	  memcpy (inherited_attrs, attrs, LFACE_VECTOR_SIZE * sizeof (attrs[0]));
   0x000000010015fab4 <+100>:	mov    -0xc8(%rbp),%rdx
   0x000000010015fabb <+107>:	mov    %r10,%rdi
   0x000000010015fabe <+110>:	mov    %rdx,%rsi
   0x000000010015fac1 <+113>:	mov    %r9,%rdx
   0x000000010015fac4 <+116>:	callq  0x1003cfb12

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fac9 <+121>:	mov    -0xe0(%rbp),%rax
   0x000000010015fad0 <+128>:	mov    $0x45c,%edi
   0x000000010015fad5 <+133>:	mov    %rax,-0x100(%rbp)
   0x000000010015fadc <+140>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fae1 <+145>:	xor    %edi,%edi
   0x000000010015fae3 <+147>:	mov    %dil,%cl
   0x000000010015fae6 <+150>:	mov    -0x100(%rbp),%rdx
   0x000000010015faed <+157>:	cmp    %rax,%rdx

2162		 && !NILP (inherited_attrs[LFACE_INHERIT_INDEX])
   0x000000010015faf0 <+160>:	mov    %cl,-0x101(%rbp)
   0x000000010015faf6 <+166>:	jne    0x10015fb54 <face_inherited_attr+260>
   0x000000010015fafc <+172>:	xor    %edi,%edi
   0x000000010015fafe <+174>:	mov    -0x30(%rbp),%rax
   0x000000010015fb02 <+178>:	mov    %rax,-0x110(%rbp)
   0x000000010015fb09 <+185>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fb0e <+190>:	xor    %edi,%edi
   0x000000010015fb10 <+192>:	mov    %dil,%cl
   0x000000010015fb13 <+195>:	mov    -0x110(%rbp),%rdx
   0x000000010015fb1a <+202>:	cmp    %rax,%rdx

2163		 && !UNSPECIFIEDP (inherited_attrs[LFACE_INHERIT_INDEX]))
   0x000000010015fb1d <+205>:	mov    %cl,-0x101(%rbp)
   0x000000010015fb23 <+211>:	je     0x10015fb54 <face_inherited_attr+260>
   0x000000010015fb29 <+217>:	mov    -0x30(%rbp),%rax
   0x000000010015fb2d <+221>:	mov    $0x45c,%edi
   0x000000010015fb32 <+226>:	mov    %rax,-0x118(%rbp)
   0x000000010015fb39 <+233>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fb3e <+238>:	mov    -0x118(%rbp),%rcx
   0x000000010015fb45 <+245>:	cmp    %rax,%rcx
   0x000000010015fb48 <+248>:	sete   %dl
   0x000000010015fb4b <+251>:	xor    $0xff,%dl
   0x000000010015fb4e <+254>:	mov    %dl,-0x101(%rbp)
   0x000000010015fb54 <+260>:	mov    -0x101(%rbp),%al

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fb5a <+266>:	test   $0x1,%al
   0x000000010015fb5c <+268>:	jne    0x10015fb67 <face_inherited_attr+279>
   0x000000010015fb62 <+274>:	jmpq   0x10015fd0e <face_inherited_attr+702>

2164	    {
2165	      Lisp_Object parent_face = inherited_attrs[LFACE_INHERIT_INDEX];
   0x000000010015fb67 <+279>:	mov    -0x30(%rbp),%rax
   0x000000010015fb6b <+283>:	mov    %rax,-0xe8(%rbp)

2166	      bool ok;
2167	
2168	      if (CONSP (parent_face))
   0x000000010015fb72 <+290>:	mov    -0xe8(%rbp),%rax
   0x000000010015fb79 <+297>:	sar    $0x0,%rax
   0x000000010015fb7d <+301>:	mov    %eax,%ecx
   0x000000010015fb7f <+303>:	sub    $0x3,%ecx
   0x000000010015fb82 <+306>:	and    $0x7,%ecx
   0x000000010015fb85 <+309>:	cmp    $0x0,%ecx
   0x000000010015fb88 <+312>:	jne    0x10015fcad <face_inherited_attr+605>

2169		{
2170		  Lisp_Object tail;
2171		  ok = false;
   0x000000010015fb8e <+318>:	movb   $0x0,-0xe9(%rbp)

2172		  for (tail = parent_face; !NILP (tail); tail = XCDR (tail))
   0x000000010015fb95 <+325>:	mov    -0xe8(%rbp),%rax
   0x000000010015fb9c <+332>:	mov    %rax,-0xf8(%rbp)
   0x000000010015fba3 <+339>:	xor    %edi,%edi
   0x000000010015fba5 <+341>:	mov    -0xf8(%rbp),%rax
   0x000000010015fbac <+348>:	mov    %rax,-0x120(%rbp)
   0x000000010015fbb3 <+355>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fbb8 <+360>:	mov    -0x120(%rbp),%rcx
   0x000000010015fbbf <+367>:	cmp    %rax,%rcx
   0x000000010015fbc2 <+370>:	sete   %dl
   0x000000010015fbc5 <+373>:	xor    $0xff,%dl
   0x000000010015fbc8 <+376>:	test   $0x1,%dl
   0x000000010015fbcb <+379>:	jne    0x10015fbd6 <face_inherited_attr+390>
   0x000000010015fbd1 <+385>:	jmpq   0x10015fc96 <face_inherited_attr+582>
   0x000000010015fbd6 <+390>:	xor    %r8d,%r8d
   0x000000010015fbd9 <+393>:	lea    -0xb0(%rbp),%rcx

2173		    {
2174		      ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs,
   0x000000010015fbe0 <+400>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fbe7 <+407>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fbee <+414>:	mov    -0xf8(%rbp),%rax
   0x000000010015fbf5 <+421>:	mov    -0x3(%rax),%rdx

2175						 false, named_merge_points);
   0x000000010015fbf9 <+425>:	mov    -0xd8(%rbp),%r9

2174		      ok = get_lface_attributes (w, f, XCAR (tail), inherited_attrs,
   0x000000010015fc00 <+432>:	callq  0x100156d50 <get_lface_attributes>
   0x000000010015fc05 <+437>:	and    $0x1,%al
   0x000000010015fc07 <+439>:	mov    %al,-0xe9(%rbp)

2176		      if (!ok)
   0x000000010015fc0d <+445>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fc14 <+452>:	jne    0x10015fc1f <face_inherited_attr+463>

2177			break;
   0x000000010015fc1a <+458>:	jmpq   0x10015fc96 <face_inherited_attr+582>
   0x000000010015fc1f <+463>:	lea    -0xb0(%rbp),%rdx

2178		      attr_val = face_inherited_attr (w, f, inherited_attrs, attr_idx,
   0x000000010015fc26 <+470>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fc2d <+477>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fc34 <+484>:	mov    -0xcc(%rbp),%ecx

2179						      named_merge_points);
   0x000000010015fc3a <+490>:	mov    -0xd8(%rbp),%r8

2178		      attr_val = face_inherited_attr (w, f, inherited_attrs, attr_idx,
   0x000000010015fc41 <+497>:	callq  0x10015fa50 <face_inherited_attr>
   0x000000010015fc46 <+502>:	mov    %rax,-0xe0(%rbp)

2180		      if (!UNSPECIFIEDP (attr_val))
   0x000000010015fc4d <+509>:	mov    -0xe0(%rbp),%rax
   0x000000010015fc54 <+516>:	mov    $0x45c,%edi
   0x000000010015fc59 <+521>:	mov    %rax,-0x128(%rbp)
   0x000000010015fc60 <+528>:	callq  0x10014c7b0 <builtin_lisp_symbol>
   0x000000010015fc65 <+533>:	mov    -0x128(%rbp),%rdx
   0x000000010015fc6c <+540>:	cmp    %rax,%rdx
   0x000000010015fc6f <+543>:	je     0x10015fc7a <face_inherited_attr+554>

2181			break;
   0x000000010015fc75 <+549>:	jmpq   0x10015fc96 <face_inherited_attr+582>

2182		    }
   0x000000010015fc7a <+554>:	jmpq   0x10015fc7f <face_inherited_attr+559>

2172		  for (tail = parent_face; !NILP (tail); tail = XCDR (tail))
   0x000000010015fc7f <+559>:	mov    -0xf8(%rbp),%rax
   0x000000010015fc86 <+566>:	mov    0x5(%rax),%rax
   0x000000010015fc8a <+570>:	mov    %rax,-0xf8(%rbp)
   0x000000010015fc91 <+577>:	jmpq   0x10015fba3 <face_inherited_attr+339>

2183		  if (!ok)	/* bad face? */
   0x000000010015fc96 <+582>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fc9d <+589>:	jne    0x10015fca8 <face_inherited_attr+600>

2184		    break;
   0x000000010015fca3 <+595>:	jmpq   0x10015fd0e <face_inherited_attr+702>

2185		}
   0x000000010015fca8 <+600>:	jmpq   0x10015fd09 <face_inherited_attr+697>
   0x000000010015fcad <+605>:	xor    %r8d,%r8d
   0x000000010015fcb0 <+608>:	lea    -0xb0(%rbp),%rcx

2186	      else
2187		{
2188		  ok = get_lface_attributes (w, f, parent_face, inherited_attrs,
   0x000000010015fcb7 <+615>:	mov    -0xb8(%rbp),%rdi
   0x000000010015fcbe <+622>:	mov    -0xc0(%rbp),%rsi
   0x000000010015fcc5 <+629>:	mov    -0xe8(%rbp),%rdx

2189					     false, named_merge_points);
   0x000000010015fccc <+636>:	mov    -0xd8(%rbp),%r9

2188		  ok = get_lface_attributes (w, f, parent_face, inherited_attrs,
   0x000000010015fcd3 <+643>:	callq  0x100156d50 <get_lface_attributes>
   0x000000010015fcd8 <+648>:	and    $0x1,%al
   0x000000010015fcda <+650>:	mov    %al,-0xe9(%rbp)

2190		  if (!ok)
   0x000000010015fce0 <+656>:	testb  $0x1,-0xe9(%rbp)
   0x000000010015fce7 <+663>:	jne    0x10015fcf2 <face_inherited_attr+674>

2191		    break;
   0x000000010015fced <+669>:	jmpq   0x10015fd0e <face_inherited_attr+702>

2192		  attr_val = inherited_attrs[attr_idx];
   0x000000010015fcf2 <+674>:	mov    -0xcc(%rbp),%eax
   0x000000010015fcf8 <+680>:	mov    %eax,%ecx
   0x000000010015fcfa <+682>:	mov    -0xb0(%rbp,%rcx,8),%rcx
   0x000000010015fd02 <+690>:	mov    %rcx,-0xe0(%rbp)

2161	  while (UNSPECIFIEDP (attr_val)
   0x000000010015fd09 <+697>:	jmpq   0x10015fac9 <face_inherited_attr+121>

2193		}
2194	    }
2195	  return attr_val;
   0x000000010015fd0e <+702>:	mov    -0xe0(%rbp),%rax
   0x000000010015fd15 <+709>:	mov    0x2a5474(%rip),%rcx        # 0x100405190
   0x000000010015fd1c <+716>:	mov    (%rcx),%rcx
   0x000000010015fd1f <+719>:	mov    -0x8(%rbp),%rdx
   0x000000010015fd23 <+723>:	cmp    %rdx,%rcx
   0x000000010015fd26 <+726>:	mov    %rax,-0x130(%rbp)
   0x000000010015fd2d <+733>:	jne    0x10015fd43 <face_inherited_attr+755>
   0x000000010015fd33 <+739>:	mov    -0x130(%rbp),%rax
   0x000000010015fd3a <+746>:	add    $0x130,%rsp
   0x000000010015fd41 <+753>:	pop    %rbp
   0x000000010015fd42 <+754>:	retq   
   0x000000010015fd43 <+755>:	callq  0x1003cf4a6
   0x000000010015fd48 <+760>:	ud2    
End of assembler dump.

  parent reply	other threads:[~2020-01-08 21:43 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-26  9:47 bug#38748: 28.0.50; crash on MacOS 10.15.2 Andrii Kolomoiets
2019-12-26 13:04 ` Alan Third
2019-12-26 17:18   ` Eli Zaretskii
2019-12-27 11:28     ` Andrii Kolomoiets
2019-12-27 14:14       ` Eli Zaretskii
2019-12-29 19:01         ` Andrii Kolomoiets
2019-12-29 19:31           ` Eli Zaretskii
2020-01-01 20:42             ` Andrii Kolomoiets
2020-01-02 14:06               ` Eli Zaretskii
2020-01-08 17:39                 ` Robert Pluim
2020-01-08 19:18                   ` Pip Cet
2020-01-08 19:58                     ` Eli Zaretskii
2020-01-08 20:39                       ` Pip Cet
2020-01-09  3:30                         ` Eli Zaretskii
2020-01-10  7:32                           ` Pip Cet
2020-01-10  8:27                             ` Eli Zaretskii
2020-01-10  8:58                               ` Robert Pluim
2020-01-10  9:21                                 ` Eli Zaretskii
2020-01-10 10:18                                   ` Robert Pluim
2020-01-11  6:26                                     ` Pankaj Jangid
2020-01-11  8:08                                       ` Eli Zaretskii
2020-01-11 10:43                                         ` Pankaj Jangid
2020-01-11 12:14                                           ` Eli Zaretskii
2020-01-10  9:22                               ` Pip Cet
2020-01-10  9:33                                 ` Eli Zaretskii
2020-01-11 13:59                                 ` Alan Third
2020-01-11 14:13                                   ` Pip Cet
2020-01-11 19:07                                     ` Alan Third
2020-01-08 21:43                     ` Robert Pluim [this message]
2020-01-08 22:18                       ` Pip Cet
2020-01-08 22:23                         ` Robert Pluim
2020-01-09  7:51                           ` Robert Pluim
2020-01-09 10:07                             ` Eli Zaretskii
2020-01-09 10:31                               ` Robert Pluim
2020-01-09 14:10                                 ` Pip Cet
2020-01-09 14:16                                 ` Eli Zaretskii
2020-01-09 14:56                                   ` Robert Pluim
2020-01-09 17:06                                     ` Eli Zaretskii
2020-01-09 13:51                               ` Andrii Kolomoiets
2020-01-09 14:13                                 ` Robert Pluim
2020-01-09 14:16                                 ` Pip Cet
2020-01-09 14:29                                   ` Andrii Kolomoiets
2020-01-09 15:15                                   ` Robert Pluim
2020-01-11 18:37                                     ` Pieter van Oostrum
2020-01-11 18:43                                       ` Eli Zaretskii
2020-01-11 21:23                                         ` Pieter van Oostrum
2020-01-12  3:33                                           ` Eli Zaretskii
2020-01-11 19:14                                       ` Pip Cet
2020-01-11 21:36                                         ` Pieter van Oostrum
2020-01-04 16:48               ` Pieter van Oostrum
2020-01-04 17:25                 ` Alan Third
2020-01-05 19:41                   ` Pieter van Oostrum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2ftgpipz1.fsf@gmail.com \
    --to=rpluim@gmail.com \
    --cc=38748@debbugs.gnu.org \
    --cc=alan@idiocy.org \
    --cc=andreyk.mad@gmail.com \
    --cc=jguenther@gmail.com \
    --cc=pipcet@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).