Bug#974937: evince: crashes then runs
Bernhard Übelacker
bernhardu at mailbox.org
Fri Dec 18 15:23:00 GMT 2020
Dear Maintainer,
from the dmesg line from the submitter I think the crash happens
save_thumbnail_in_cache_thread in [1], between the calls to
cairo_image_surface_get_height and -width.
Tried to reach that function just showing some random PDF
but did not get there.
@Nicolas: I assume Simon asked for a backtrace of the crash.
There are several ways described in the link in his last mail.
The easiest might be to install systemd-coredump and when
the next crash happens look at the end of the output
of 'journalctl --no-pager'.
Kind regards,
Bernhard
[1] https://gitlab.gnome.org/GNOME/evince/-/blob/master/shell/ev-recent-view.c#L351
-------------- next part --------------
# Bullseye/testing i386 qemu VM 2020-12-18
apt update
apt dist-upgrade
apt install systemd-coredump gnome gdb evince libgdk-pixbuf2.0-0
systemctl stop sddm
systemctl start sddm
wget https://snapshot.debian.org/archive/debian/20201013T145646Z/pool/main/e/evince/evince_3.38.0-2_i386.deb
wget https://snapshot.debian.org/archive/debian/20201013T145646Z/pool/main/e/evince/evince-common_3.38.0-2_all.deb
wget https://snapshot.debian.org/archive/debian/20201013T145646Z/pool/main/e/evince/libevdocument3-4_3.38.0-2_i386.deb
wget https://snapshot.debian.org/archive/debian/20201013T145646Z/pool/main/e/evince/libevview3-3_3.38.0-2_i386.deb
wget https://snapshot.debian.org/archive/debian-debug/20201013T145001Z/pool/main/e/evince/evince-dbgsym_3.38.0-2_i386.deb
wget https://snapshot.debian.org/archive/debian/20201013T145646Z/pool/main/e/evince/gir1.2-evince-3.0_3.38.0-2_i386.deb
dpkg -i *.deb
cd Dokumente/
wget https://www.debian.org/doc/manuals/debian-faq/debian-faq.de.pdf
https://wiki.debian.org/InterpretingKernelOutputAtProcessCrash
nov. 16 20:33:38 nicolas.home kernel: pool-evince[16278]: segfault at fffffdd4 ip 004de186 sp afbfa034 error 5 in evince[4cd000+3a000]
nov. 16 20:33:38 nicolas.home kernel: Code: 89 34 24 89 44 24 1c e8 b8 08 ff ff 8b 54 24 1c 89 14 24 50 6a 00 6a 00 56 e8 06 19 ff ff 83 c4 20 ff 77 08 ff 77 04 89 c6 50 <ff> 75 14 e8 52 06 ff ff 89 34 24 e8 b2 3f ff ff 58 5a 6a 01 ff 74
"error 5" == 0b00000101 ==
* bit 0 == 1: protection fault
* bit 1 == 0: read access
* bit 2 == 1: user-mode access
benutzer at debian:~$ echo -n "find /b ..., ..., 0x" && \
echo "89 34 24 89 44 24 1c e8 b8 08 ff ff 8b 54 24 1c 89 14 24 50 6a 00 6a 00 56 e8 06 19 ff ff 83 c4 20 ff 77 08 ff 77 04 89 c6 50 <ff> 75 14 e8 52 06 ff ff 89 34 24 e8 b2 3f ff ff 58 5a 6a 01 ff 74" \
| sed 's/[<>]//g' | sed 's/ /, 0x/g'
find /b ..., ..., 0x89, 0x34, 0x24, 0x89, 0x44, 0x24, 0x1c, 0xe8, 0xb8, 0x08, 0xff, 0xff, 0x8b, 0x54, 0x24, 0x1c, 0x89, 0x14, 0x24, 0x50, 0x6a, 0x00, 0x6a, 0x00, 0x56, 0xe8, 0x06, 0x19, 0xff, 0xff, 0x83, 0xc4, 0x20, 0xff, 0x77, 0x08, 0xff, 0x77, 0x04, 0x89, 0xc6, 0x50, 0xff, 0x75, 0x14, 0xe8, 0x52, 0x06, 0xff, 0xff, 0x89, 0x34, 0x24, 0xe8, 0xb2, 0x3f, 0xff, 0xff, 0x58, 0x5a, 0x6a, 0x01, 0xff, 0x74
gdb -q
set width 0
set pagination off
set environment DISPLAY=:0
file /usr/bin/evince
tb main
run
info target
...
0x0042c150 - 0x00460924 is .text
...
(gdb) find /b 0x0042c150, 0x00460924, 0x89, 0x34, 0x24, 0x89, 0x44, 0x24, 0x1c, 0xe8, 0xb8, 0x08, 0xff, 0xff, 0x8b, 0x54, 0x24, 0x1c, 0x89, 0x14, 0x24, 0x50, 0x6a, 0x00, 0x6a, 0x00, 0x56, 0xe8, 0x06, 0x19, 0xff, 0xff, 0x83, 0xc4, 0x20, 0xff, 0x77, 0x08, 0xff, 0x77, 0x04, 0x89, 0xc6, 0x50, 0xff, 0x75, 0x14, 0xe8, 0x52, 0x06, 0xff, 0xff, 0x89, 0x34, 0x24, 0xe8, 0xb2, 0x3f, 0xff, 0xff, 0x58, 0x5a, 0x6a, 0x01, 0xff, 0x74
0x43815c <save_thumbnail_in_cache_thread+60>
1 pattern found.
(gdb) b *0x43815c
Breakpoint 2 at 0x43815c: file ../shell/ev-recent-view.c, line 351.
(gdb) info b
Num Type Disp Enb Address What
2 breakpoint keep y 0x0043815c in save_thumbnail_in_cache_thread at ../shell/ev-recent-view.c:351
(gdb) disassemble save_thumbnail_in_cache_thread
Dump of assembler code for function save_thumbnail_in_cache_thread:
0x00438120 <+0>: push %ebp
0x00438121 <+1>: push %edi
0x00438122 <+2>: push %esi
0x00438123 <+3>: push %ebx
0x00438124 <+4>: call 0x42c780 <__x86.get_pc_thunk.bx>
0x00438129 <+9>: add $0x57a2f,%ebx
0x0043812f <+15>: sub $0x1c,%esp
0x00438132 <+18>: mov 0x38(%esp),%edi
0x00438136 <+22>: call 0x42af10 <ev_job_thumbnail_get_type at plt>
0x0043813b <+27>: mov 0x181c(%ebx),%ebp
0x00438141 <+33>: sub $0x8,%esp
0x00438144 <+36>: add 0x3c(%esp),%ebp
0x00438148 <+40>: push %eax
0x00438149 <+41>: push 0x14(%edi)
0x0043814c <+44>: call 0x427df0 <g_type_check_instance_cast at plt>
0x00438151 <+49>: mov 0x4c(%eax),%esi
0x00438154 <+52>: mov %esi,(%esp)
0x00438157 <+55>: call 0x42aa00 <cairo_image_surface_get_height at plt>
0x0043815c <+60>: mov %esi,(%esp) <<<<<<<<<<<<
0x0043815f <+63>: mov %eax,0x1c(%esp)
0x00438163 <+67>: call 0x428a20 <cairo_image_surface_get_width at plt>
0x00438168 <+72>: mov 0x1c(%esp),%edx
0x0043816c <+76>: mov %edx,(%esp)
0x0043816f <+79>: push %eax
0x00438170 <+80>: push $0x0
0x00438172 <+82>: push $0x0
0x00438174 <+84>: push %esi
0x00438175 <+85>: call 0x429a80 <gdk_pixbuf_get_from_surface at plt>
0x0043817a <+90>: add $0x20,%esp
0x0043817d <+93>: push 0x8(%edi)
0x00438180 <+96>: push 0x4(%edi)
0x00438183 <+99>: mov %eax,%esi
0x00438185 <+101>: push %eax
0x00438186 <+102>: push 0x14(%ebp)
0x00438189 <+105>: call 0x4287e0 <gnome_desktop_thumbnail_factory_save_thumbnail at plt>
0x0043818e <+110>: mov %esi,(%esp)
0x00438191 <+113>: call 0x42c148 <g_object_unref at plt>
0x00438196 <+118>: pop %eax
0x00438197 <+119>: pop %edx
0x00438198 <+120>: push $0x1
0x0043819a <+122>: push 0x3c(%esp)
0x0043819e <+126>: call 0x4296d0 <g_task_return_boolean at plt>
0x004381a3 <+131>: add $0x2c,%esp
0x004381a6 <+134>: pop %ebx
0x004381a7 <+135>: pop %esi
0x004381a8 <+136>: pop %edi
0x004381a9 <+137>: pop %ebp
0x004381aa <+138>: ret
End of assembler dump.
(gdb) b save_thumbnail_in_cache_thread
Breakpoint 3 at 0x438120: file ../shell/ev-recent-view.c, line 348.
https://sources.debian.org/src/evince/3.38.0-3/shell/ev-recent-view.c/#L351
https://gitlab.gnome.org/GNOME/evince/-/blob/master/shell/ev-recent-view.c#L351
https://buildd.debian.org/status/fetch.php?pkg=evince&arch=i386&ver=3.38.0-2&stamp=1602587776&raw=0
More information about the pkg-gnome-maintainers
mailing list