[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files'
From: |
Noam Postavsky |
Subject: |
bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files' |
Date: |
Tue, 13 Mar 2018 20:09:17 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux) |
Eli Zaretskii <eliz@gnu.org> writes:
> Should you look at pp or at *pp?
I think it should be pp, but I'm not sure. The context:
#4854 0x000000000060f452 in mark_memory (start=0x7fffffffa520,
end=0x7fffffffe868)
at ../../src/alloc.c:4985
#4855 0x000000000060f493 in mark_stack (bottom=0x7fffffffe868
"a\036h\364\377\177",
end=0x7fffffffa520 "0\245\377\377\377\177") at ../../src/alloc.c:5193
mark_memory (void *start, void *end)
{
...
for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT)
{
mark_maybe_pointer (*(void **) pp);
mark_maybe_object (*(Lisp_Object *) pp);
}
So the value of pp ranges over stack addresses and *pp would be the
contents of the stack location.
> Also note that for Lisp objects that are marked you need to reset
> their mark bit before trying to determine their type and value.
I think I'm looking for a C variable, and not a Lisp object (although
the C variable presumably contains/points to a Lisp object).
> If none of the above helps, please walk me through the steps that led
> you to look at -0x268(%rbp), because I'm not sure I follow.
Starting with the value of pp, I then go up looking for a close value of
$rbp:
(gdb) p pp
$39 = 0x7fffffffa968 "\220L\346\002"
(gdb) up
#4855 0x000000000060f493 in mark_stack (bottom=0x7fffffffe868
"a\036h\364\377\177",
end=0x7fffffffa520 "0\245\377\377\377\177") at ../../src/alloc.c:5193
5193 mark_memory (bottom, end);
(gdb) p $rbp
$40 = (void *) 0x7fffffffa420
(gdb) up
#4856 0x00000000006cdd75 in mark_one_thread (thread=0xe103e0 <main_thread>) at
../../src/thread.c:616
616 mark_stack (thread->m_stack_bottom, stack_top);
(gdb) p $rbp
$41 = (void *) 0x7fffffffa470
[...]
(gdb) up
#4863 0x000000000063c2cb in Ffuncall (nargs=6, args=0x7fffffffa7f8) at
../../src/eval.c:2751
2751 maybe_gc ();
(gdb) p $rbp
$48 = (void *) 0x7fffffffa780
(gdb) up
#4864 0x000000000068d950 in exec_byte_code (bytestr=XIL(0x2e7aad4),
vector=XIL(0x2e72715),
maxdepth=make_number(18), args_template=make_number(768), nargs=3,
args=0x7fffffffad20)
at ../../src/bytecode.c:632
632 TOP = Ffuncall (op + 1, &TOP);
(gdb) p $rbp
$49 = (void *) 0x7fffffffabd0
Now I see that $rbp is higher than the target address, and the
difference is 0x268, so the target location should be -0x268(%rbp).
(gdb) p $rbp - 0x7fffffffa968
$52 = (void *) 0x268
Except something must be wrong in my reasoning, since the only
ocurrences of -0x268(%rbp) are the buffer-string args, which could only
hold integers or markers (neither of which could further point to long
chains of objects).
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', (continued)
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', John Mastro, 2018/03/02
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/03
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/04
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/04
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/11
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/11
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/11
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/11
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/12
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/13
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files',
Noam Postavsky <=
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/15
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/17
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/17
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/17
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Noam Postavsky, 2018/03/17
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files', Eli Zaretskii, 2018/03/19