diagnosing freezes (DRI?)
Robert Noland
rnoland at FreeBSD.org
Fri Nov 20 23:28:52 UTC 2009
On Fri, 2009-11-20 at 20:56 +0000, deeptech71 at gmail.com wrote:
> Robert Noland wrote:
> > Ok, try this one... It should address all of the copyin/copyout paths in
> > radeon. the r300_cmdbuf.c bits worry me a little, but I'm running this
> > way now....
> >
> > http://people.freebsd.org/~rnoland/drm_radeon-copyin-fix-try2.patch
>
> Well, patched worked well, my system was stable
I"m not sure that I even have that patch in my repo now... I need to
re-examine all of the copyin/copyout stuff for a more correct fix. Just
dropping the lock isn't always appropriate.
robert.
> ...until this day. I ran startx, which loaded up Enlightenment. Ran a
> 3D application (Tremulous) (2 of them actually). Then, I opened up so
> much xterm windows that Enlightenment didn't respond. I switched to
> the virtual terminals and CTRL+C'd the startx script/whatever. I ran
> startx again (Enlightenment, ...). But I noticed that Tremulous was
> not shut down (with the CTRL+C) and was still running in the
> background (somehow without a window), eating CPU. I ran "killall
> tremulous.x86". Panic!
>
> #kgdb kernel.debug /var/crash/vmcore.5
> 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"...
>
> Unread portion of the kernel message buffer:
> Kernel page fault with the following non-sleepable locks held:
> exclusive sleep mutex drmdev (drmdev) r = 0 (0xc369b860) locked @
> /usr/src/sys/modules/drm/drm/../../../dev/drm/drm_drv.c:791
> KDB: stack backtrace:
> db_trace_self_wrapper(c0c72e66,d679aa1c,c08c0d35,c3f19970,317,...) at
> db_trace_self_wrapper+0x26
> kdb_backtrace(c3f19970,317,ffffffff,c0f02dc4,d679aa54,...) at kdb_backtrace+0x29
> _witness_debugger(c0c752de,d679aa68,4,1,0,...) at _witness_debugger+0x25
> witness_warn(5,0,c0ca9363,c0c68062,c41ead48,...) at witness_warn+0x1fd
> trap(d679aaf4) at trap+0x173
> calltrap() at calltrap+0x6
> --- trap 0xc, eip = 0xc3eb693b, esp = 0xd679ab34, ebp = 0xd679ab90 ---
> radeon_cp_cmdbuf(c369b800,c38f33b0,c38c9940,317,c0c69ae0,...) at
> radeon_cp_cmdbuf+0xcb
> drm_ioctl(c38ccb00,80106450,c38f33b0,3,c396a900,...) at drm_ioctl+0x356
> devfs_ioctl_f(c44ba508,80106450,c38f33b0,c419cb00,c396a900,...) at
> devfs_ioctl_f+0xf8
> kern_ioctl(c396a900,5e,80106450,c38f33b0,8ba670,...) at kern_ioctl+0x1fd
> ioctl(c396a900,d679acf8,c,c0c76875,c0d55288,...) at ioctl+0x134
> syscall(d679ad38) at syscall+0x2a3
> Xint0x80_syscall() at Xint0x80_syscall+0x20
> --- syscall (54, FreeBSD ELF32, ioctl), eip = 0x283d755f, esp =
> 0xbfbfd6ec, ebp = 0xbfbfd708 ---
>
>
> Fatal trap 12: page fault while in kernel mode
> cpuid = 1; apic id = 01
> fault virtual address = 0x148
> fault code = supervisor read, page not present
> instruction pointer = 0x20:0xc3eb693b
> stack pointer = 0x28:0xd679ab34
> frame pointer = 0x28:0xd679ab90
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, def32 1, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = 1075 (initial thread)
> trap number = 12
> panic: page fault
> cpuid = 1
> Uptime: 3m1s
> Physical memory: 494 MB
> Dumping 102 MB: 87 71 55 39 23 7
>
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/snd_es137x.ko...Reading
> symbols from /boot/kernel.GENERIC.r196193.copyin2.debug/snd_es137x.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/snd_es137x.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/sound.ko...Reading symbols
> from /boot/kernel.GENERIC.r196193.copyin2.debug/sound.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/sound.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/ntfs.ko...Reading symbols
> from /boot/kernel.GENERIC.r196193.copyin2.debug/ntfs.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/ntfs.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/linprocfs.ko...Reading
> symbols from /boot/kernel.GENERIC.r196193.copyin2.debug/linprocfs.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/linprocfs.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/linux.ko...Reading symbols
> from /boot/kernel.GENERIC.r196193.copyin2.debug/linux.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/linux.ko
> Reading symbols from /usr/local/modules/rtc.ko...done.
> Loaded symbols for /usr/local/modules/rtc.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/radeon.ko...Reading symbols
> from /boot/kernel.GENERIC.r196193.copyin2.debug/radeon.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/radeon.ko
> Reading symbols from
> /boot/kernel.GENERIC.r196193.copyin2.debug/drm.ko...Reading symbols
> from /boot/kernel.GENERIC.r196193.copyin2.debug/drm.ko.symbols...done.
> done.
> Loaded symbols for /boot/kernel.GENERIC.r196193.copyin2.debug/drm.ko
> #0 doadump () at pcpu.h:246
> 246 __asm __volatile("movl %%fs:0,%0" : "=r" (td));
> (kgdb) up
> #1 0xc087fa1e in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:419
> 419 doadump();
> (kgdb)
> #2 0xc087fcf2 in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:575
> 575 boot(bootopt);
> (kgdb)
> #3 0xc0baeac3 in trap_fatal (frame=0xd679aaf4, eva=328)
> at /usr/src/sys/i386/i386/trap.c:933
> 933 panic("%s", trap_msg[type]);
> (kgdb)
> #4 0xc0baf3e1 in trap (frame=0xd679aaf4) at /usr/src/sys/i386/i386/trap.c:325
> 325 trap_fatal(frame, eva);
> (kgdb)
> #5 0xc0b918ab in calltrap () at /usr/src/sys/i386/i386/exception.s:165
> 165 call trap
> Current language: auto; currently asm
> (kgdb)
> #6 0xc3eb693b in radeon_cp_cmdbuf (dev=0xc369b800, data=0xc38f33b0,
> file_priv=0xc38c9940)
> at /usr/src/sys/modules/drm/radeon/../../../dev/drm/radeon_state.c:2879
> 2879 VB_AGE_TEST_WITH_RETURN(dev_priv);
> Current language: auto; currently c
> (kgdb)
> #7 0xc3f13ad6 in drm_ioctl (kdev=0xc38ccb00, cmd=2148557904,
> data=0xc38f33b0 "\200\002", flags=3, p=0xc396a900)
> at /usr/src/sys/modules/drm/drm/../../../dev/drm/drm_drv.c:793
> 793 retcode = -func(dev, data, file_priv);
> (kgdb)
> #8 0xc08034a8 in devfs_ioctl_f (fp=0xc44ba508, com=2148557904,
> data=0xc38f33b0, cred=0xc419cb00, td=0xc396a900)
> at /usr/src/sys/fs/devfs/devfs_vnops.c:659
> 659 error = dsw->d_ioctl(dev, com, data, fp->f_flag, td);
> (kgdb)
> #9 0xc08c43ad in kern_ioctl (td=0xc396a900, fd=94, com=2148557904,
> data=0xc38f33b0 "\200\002") at file.h:262
> 262 return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td));
> (kgdb)
> #10 0xc08c4534 in ioctl (td=0xc396a900, uap=0xd679acf8)
> at /usr/src/sys/kern/sys_generic.c:678
> 678 error = kern_ioctl(td, uap->fd, com, data);
> (kgdb)
> #11 0xc0baef83 in syscall (frame=0xd679ad38)
> at /usr/src/sys/i386/i386/trap.c:1073
> 1073 error = (*callp->sy_call)(td, args);
> (kgdb)
> #12 0xc0b91910 in Xint0x80_syscall () at /usr/src/sys/i386/i386/exception.s:261
> 261 call syscall
> Current language: auto; currently asm
> (kgdb)
> #13 0x00000033 in ?? ()
> (kgdb)
> Previous frame inner to this frame (corrupt stack?)
> (kgdb)
> Initial frame selected; you cannot go up.
> (kgdb) quit
>
> #uname -a
> FreeBSD 8.0-BETA2 FreeBSD 8.0-BETA2 #0 r196195M: Fri Nov 20 17:17:00
> UTC 2009 devhc@:/usr/obj/usr/src/sys/GENERIC i386
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
--
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
More information about the freebsd-current
mailing list