Trouble with APM suspend in 5.3-R

Dave Walton dwalton at acm.org
Mon Jan 24 01:59:12 PST 2005


Andrew Belashov wrote:
> Добрый день!

Translation?

> First, show following:
> $ addr2line -f -e /boot/kernel/kernel.debug 0xc061ed2e
> If /boot/kernel/kernel.debug does not exist, use /boot/kernel/kernel.

Using /boot/kernel/kernel, addr2line reports:

    turnstile_head
    ??:0

That doesn't look very useful, so I'll do it again below, after I clean 
things up and make a debug kernel.


Gleb Smirnoff wrote:
> Can you pls remove patch around pir, and panic system obtaining a 
> crashdump. 
> Information on this procedure is here: 
> http://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug.html#KERNELDEBUG-OBTAIN

I've now reverted back to plain 5.3-R, with just version 1.233 of
ata-all.c added, so that suspend works.


Andrew Belashov wrote:
> To make a debug kernel, add the following line to your kernel 
> configuration:
> makeoptions     DEBUG=-g

I've done this, and set dumpdev in my rc.conf.

That done, I rebooted and tested suspend/resume.  With the pir0 patch
removed, the resume triggered the ROUTE_INTERRUPT error message three
times, as before.  That was followed by the same panic screen as before,
with these values:

    fault virtual address = 0x0
    instruction pointer   = 0x8:0xc061ed0e
    stack pointer         = 0x10:0xcde52ac8
    frame pointer         = 0x10:0xcde52ac8
    code segment          = base 0x0, limit 0xfffff, type 0x1b

After reboot, I found I needed to symlink /var/crash to a directory with
enough space to hold the core and manually run /etc/rc.d/savecore again.

At this point, addr2line now reports:

    # addr2line -f -e kernel.debug 0xc061ed0e
    turnstile_head
    /usr/src/sys/kern/subr_turnstile.c:763


Since I now have a core file, I expect you'd like to see a backtrace...
(Which is about the extent of my knowledge of gdb.)

# kgdb kernel.debug /var/crash/vmcore.0
[GDB will not be able to debug user-mode threads: 
/usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you 
are welcome to change it and/or distribute copies of it under certain 
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd".
doadump () at pcpu.h:159
(kgdb) backtrace
#0  doadump () at pcpu.h:159
#1  0xc05ffa69 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:397
#2  0xc05ffd25 in panic (fmt=0xc07f5ecb "%s")
     at /usr/src/sys/kern/kern_shutdown.c:553
#3  0xc07af4a0 in trap_fatal (frame=0xcde52a88, eva=0)
     at /usr/src/sys/i386/i386/trap.c:809
#4  0xc07aec49 in trap (frame=
       {tf_fs = -1063387112, tf_es = -840630256, tf_ds = -1067384816, 
tf_edi = -1049316608, tf_esi = -1049320320, tf_ebp = -840619320, tf_isp 
= -840619340, tf_ebx = 0, tf_edx = -1050516704, tf_ecx = -1049320320, 
tf_eax = 0, tf_trapno = 12, tf_err = 0, tf_eip = -1067324146, tf_cs = 8, 
tf_eflags = 589894, tf_esp = -840619292, tf_ss = -1067486604}) at 
/usr/src/sys/i386/i386/trap.c:247
#5  0xc079eeda in calltrap () at /usr/src/sys/i386/i386/exception.s:140
#6  0xc09e0018 in ?? ()
#7  0xcde50010 in ?? ()
#8  0xc0610010 in sched_pctcpu (td=0x0) at 
/usr/src/sys/kern/sched_4bsd.c:1207
#9  0xc05f7274 in _mtx_unlock_sleep (m=0xc174a480, opts=0,
     file=0xc09ded5e 
"/usr/src/sys/modules/sound/sound/../../../dev/sound/pcm/channel.c", 
line=1087) at /usr/src/sys/kern/kern_mutex.c:665
#10 0xc05f6ffe in _mtx_unlock_flags (m=0x0, opts=0,
     file=0xc09ded5e 
"/usr/src/sys/modules/sound/sound/../../../dev/sound/pcm/channel.c", 
line=1087) at /usr/src/sys/kern/kern_mutex.c:364
#11 0xc09d715d in ?? ()
#12 0xc174a480 in ?? ()
#13 0x00000000 in ?? ()
#14 0xc09ded5e in ?? ()
#15 0x0000043f in ?? ()
#16 0x10000010 in ?? ()
#17 0x00001000 in ?? ()
#18 0x00000000 in ?? ()
#19 0xc174b400 in ?? ()
#20 0x00000000 in ?? ()
#21 0xc171c700 in ?? ()
#22 0x0000ac44 in ?? ()
#23 0xcde52b60 in ?? ()
#24 0xc09d6cdd in ?? ()
#25 0xc171c700 in ?? ()
#26 0x00000020 in ?? ()
#27 0x00000000 in ?? ()
#28 0xc1735500 in ?? ()
#29 0xc1735594 in ?? ()
#30 0xc174b300 in ?? ()
#31 0xc174b400 in ?? ()
#32 0xc171c700 in ?? ()
#33 0xc1739960 in ?? ()
#34 0x10000010 in ?? ()
#35 0xcde52b80 in ?? ()
#36 0xc09d6e89 in ?? ()
#37 0xc171c700 in ?? ()
#38 0x0000ac44 in ?? ()
#39 0xc1735594 in ?? ()
#40 0x00000019 in ?? ()
#41 0xc171c700 in ?? ()
#42 0x10000010 in ?? ()
#43 0xcde52b9c in ?? ()
#44 0xc09d6ea9 in ?? ()
#45 0xc171c700 in ?? ()
#46 0x10000010 in ?? ()
#47 0x00000019 in ?? ()
#48 0xc1735500 in ?? ()
#49 0xc16fc380 in ?? ()
#50 0xcde52bb4 in ?? ()
#51 0xc09ef477 in ?? ()
#52 0xc171c700 in ?? ()
#53 0x10000010 in ?? ()
#54 0xc171c580 in ?? ()
#55 0xc171c580 in ?? ()
#56 0xcde52bc8 in ?? ()
#57 0xc0613f92 in bus_generic_resume (dev=0x0) at device_if.h:302
Previous frame inner to this frame (corrupt stack?)
(kgdb)



More information about the freebsd-mobile mailing list