[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: |
Eli Zaretskii |
Subject: |
bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files' |
Date: |
Thu, 15 Mar 2018 18:34:16 +0200 |
> From: Noam Postavsky <npostavs@gmail.com>
> Cc: michael_heerdegen@web.de, john.b.mastro@gmail.com, nicolas@petton.fr,
> 30626@debbugs.gnu.org
> Date: Tue, 13 Mar 2018 20:09:17 -0400
>
> 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.
But the call to mark_maybe_pointer means that we consider pp to be a
pointer (in)to a Lisp object.
Anyway, wouldn't it be easier to look one frame lower? We have this:
#4850 0x0000000000612b42 in mark_object (arg=XIL(0x2efcb83)) at
../../src/alloc.c:6624
#4851 0x0000000000611d4f in mark_vectorlike (ptr=0x2e64c90) at
../../src/alloc.c:6227
#4852 0x0000000000612b42 in mark_object (arg=XIL(0x2e64c95)) at
../../src/alloc.c:6624
#4853 0x000000000060f3ce in mark_maybe_pointer (p=0x2e64c90) at
../../src/alloc.c:4936
#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
In frame #4852, we have found an object, and we are marking it. Did
you try looking at that object? With these caveats:
> > Also note that for Lisp objects that are marked you need to reset
> > their mark bit before trying to determine their type and value.
- 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', 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, 2018/03/13
- bug#30626: 26.0.91; Crash when traversing a `stream-of-directory-files',
Eli Zaretskii <=
- 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