-
Notifications
You must be signed in to change notification settings - Fork 92
Using GDB to Analyze a Crash
Daniel Markstedt edited this page Feb 10, 2023
·
3 revisions
You can use gdb to detect where and possibly why an afpd process crashes. The following assumes, that you can login and get the volume list displayed successfully. If afpd crahes before that, things are a little more complicated.
- Connect to the server, login and wait for the volume list to show up, but do not select a volume yet.
- Open a console on the server as root and get the process list with ps. Look for an afpd process, where the uid matches the user you just logged in with (test1 in this example).
server:# ps -ef | grep afpd
UID PID PPID C STIME TTY TIME CMD
...
root 2396 1 0 12:39 ? 00:00:00 /usr/local/sbin/afpd ...
test1 2398 2396 0 12:45 ? 00:00:00 /usr/local/sbin/afpd ...
...
now fire up gdb and tell it to connect to the afpd process, use the afpd path and pid as shown by ps
server:# gdb /usr/local/sbin/afpd 2398
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
...
0x40216242 in read () from /lib/libc.so.6
(gdb)
simply type
(gdb) c
... and press enter
Now go back to your Mac client and open a volume When the afpd process crashes, you should get something similar to this from gdb
Program received signal SIGSEGV, Segmentation fault.
0x400c56b2 in memmove (dest=0x4016e2e5, src=0x4016e24c, len=515187639)
at ../sysdeps/generic/memmove.c:98
98 ../sysdeps/generic/memmove.c: No such file or directory.
in ../sysdeps/generic/memmove.c
Please copy this message and the type
(gdb) bt
and press enter.
This should produce something like this:
(gdb) bt
#0 0x400c56b2 in memmove (dest=0x4016e2e5, src=0x4016e24c, len=515187639)
at ../sysdeps/generic/memmove.c:98
#1 0x08049c2a in ad_v1tov2 (ad=0xbfffc260, path=0x8054da0
".AppleDouble/test")
at ad_open.c:397
#2 0x0804ac88 in ad_open (path=0x8061853 "14", adflags=2, oflags=2, mode=0,
ad=0xbfffc260) at ad_open.c:1089
#3 0x08049466 in descend (dp=0x8061748) at adv1tov2.c:95
#4 0x08049428 in descend (dp=0x8060710) at adv1tov2.c:89
#5 0x08049428 in descend (dp=0x805f6d8) at adv1tov2.c:89
#6 0x08049428 in descend (dp=0x805be88) at adv1tov2.c:89
#7 0x08049428 in descend (dp=0x805ae50) at adv1tov2.c:89
#8 0x08049428 in descend (dp=0x805d030) at adv1tov2.c:89
#9 0x08049428 in descend (dp=0x8059e18) at adv1tov2.c:89
#10 0x08049428 in descend (dp=0x8058de0) at adv1tov2.c:89
#11 0x08049428 in descend (dp=0x8057da8) at adv1tov2.c:89
#12 0x0804958b in main (argc=2, argv=0xbffffb14) at adv1tov2.c:132 #13 0x4005a177 in __libc_start_main (main=0x80494e0 <main>, argc=2,
ubp_av=0xbffffb14, init=0x8048d40 <_init>, fini=0x804dbe0 <_fini>,
rtld_fini=0x4000e184 <_dl_fini>, stack_end=0xbffffb0c)
at ../sysdeps/generic/libc-start.c:129
(gdb)
Copy this as well and raise a new issue ticket at https://github.com/Netatalk/Netatalk/issues
Resources
OS Specific Guides
- Installing Netatalk on Alpine Linux
- Installing Netatalk on Debian Linux
- Installing Netatalk on Fedora Linux
- Installing Netatalk on FreeBSD
- Installing Netatalk on macOS
- Installing Netatalk on NetBSD
- Installing Netatalk on OmniOS
- Installing Netatalk on OpenBSD
- Installing Netatalk on OpenIndiana
- Installing Netatalk on openSUSE
- Installing Netatalk on Solaris
- Installing Netatalk on Ubuntu
Technical Docs
- CatalogSearch
- Kerberos
- Special Files and Folders
- Spotlight
- AppleTalk Kernel Module
- Print Server
- MacIP Gateway
Development