NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/50349: radeondrmkms vt-switching crash
>Number: 50349
>Category: kern
>Synopsis: radeondrmkms vt-switching crash
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Oct 21 01:30:00 +0000 2015
>Originator: David A. Holland
>Release: NetBSD 7.99.20 (20150727)
>Organization:
>Environment:
System: NetBSD macaran 7.99.20 NetBSD 7.99.20 (MACARAN) #30: Mon Jul 27 20:25:15 EDT 2015 dholland@macaran:/usr/src/sys/arch/amd64/compile/MACARAN amd64
Architecture: x86_64
Machine: amd64
>Description:
Switching VTs a lot (especially between two X servers) seems to
eventually crash. With three X servers going it feels like it happens
faster but that may just be from switching more.
The crash is this assertion from common/lib/libc/gen/rb.c:405:
KASSERT(RB_BLACK_P(grandpa));
(gdb) p grandpa
$1 = (struct rb_node *) 0xfffffe809c7499e8
(gdb) p/x *grandpa
$3 = {rb_nodes = {0xfffffe800efd05e8, 0xfffffe80be2719e8},
rb_info = 0xfffffe818b4521ea}
curiously, grandpa->rb_info & RB_RED is 0... oh, I bet it's an earlier
value of grandpa and the value assigned on the previous line hasn't
shown through to gdb yet.
grandpa = RB_FATHER(father);
(gdb) p father
$4 = (struct rb_node *) 0xfffffe807aa289e8
(gdb) p *father
$5 = {rb_nodes = {0x0, 0xfffffe80be2719e8}, rb_info = 3}
meaning that grandpa would be NULL.
however,
#define RB_BLACK_P(rb) \
(RB_SENTINEL_P(rb) || ((rb)->rb_info & RB_FLAG_RED) == 0)
and
#define RB_SENTINEL_P(rb) ((rb) == NULL)
so theoretically it should still pass the assertion... I dunno what's
going on.
Other locals:
(gdb) p self
$6 = (struct rb_node *) 0xfffffe80be2719e8
(gdb) p/x *self
$8 = {rb_nodes = {0x0, 0x0}, rb_info = 0xfffffe809c7499eb}
(gdb) p *rbt
$13 = {rbt_root = 0xfffffe8124977de8,
rbt_ops = 0xffffffff805888c0 <drm_vma_node_rb_ops>, rbt_minmax = {
0xfffffe81b658e1e8, 0xfffffe817235cde8}}
alas,
(gdb) p uncle
$9 = <optimized out>
(gdb) p which
$10 = <optimized out>
(gdb) p other
$11 = <optimized out>
stack trace:
drm_ioctl -> radeon_gem_create_ioctl -> radeon_gem_object_create ->
radeon_bo_create -> ttm_bo_init -> drm_vma_offset_add ->
rb_tree_insert_node -> rb_tree_insert_rebalance -> kern_assert
#2 0xffffffff8054e1b3 in kern_assert (
fmt=fmt@entry=0xffffffff805dc380 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ") at ../../../../../../lib/libkern/kern_assert.c:51
#3 0xffffffff8054c4bb in rb_tree_insert_rebalance (rbt=0xffff80000aebbad0,
self=0xfffffe80be2719e8)
at ../../../../../../lib/libkern/../../../common/lib/libc/gen/rb.c:405
#4 rb_tree_insert_node (rbt=rbt@entry=0xffff80000aebbad0,
object=object@entry=0xfffffe80be2719b0)
at ../../../../../../lib/libkern/../../../common/lib/libc/gen/rb.c:301
#5 0xffffffff801bcdfe in drm_vma_offset_add (
mgr=mgr@entry=0xffff80000aebbac8, node=node@entry=0xfffffe80be2719b0,
npages=2) at ../../../../external/bsd/drm2/drm/drm_vma_manager.c:180
#6 0xffffffff8047caf9 in ttm_bo_init (bdev=bdev@entry=0xffff80000aebb760,
bo=bo@entry=0xfffffe80be271858, size=size@entry=8192,
type=type@entry=ttm_bo_type_device,
placement=placement@entry=0xfffffe80be271830,
page_alignment=page_alignment@entry=1,
interruptible=interruptible@entry=true,
persistent_swap_storage=persistent_swap_storage@entry=0x0,
acc_size=acc_size@entry=9344, sg=sg@entry=0x0,
destroy=destroy@entry=0xffffffff803afc91 <radeon_ttm_bo_destroy>)
at ../../../../external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1207
#7 0xffffffff803affde in radeon_bo_create (
rdev=rdev@entry=0xffff80000aebb000, size=size@entry=8192,
byte_align=byte_align@entry=4096, kernel=kernel@entry=false,
domain=domain@entry=2, sg=sg@entry=0x0,
bo_ptr=bo_ptr@entry=0xfffffe80095a7cf0)
at ../../../../external/bsd/drm2/dist/drm/radeon/radeon_object.c:193
#8 0xffffffff803a59bf in radeon_gem_object_create (
rdev=rdev@entry=0xffff80000aebb000, size=8192, alignment=4096,
initial_domain=2, discardable=discardable@entry=false,
kernel=kernel@entry=false, obj=obj@entry=0xfffffe80095a7d50)
at ../../../../external/bsd/drm2/dist/drm/radeon/radeon_gem.c:69
#9 0xffffffff803a5ead in radeon_gem_create_ioctl (dev=<optimized out>,
data=0xfffffe80095a7df8, filp=0xfffffe8181d89048)
at ../../../../external/bsd/drm2/dist/drm/radeon/radeon_gem.c:258
#10 0xffffffff801ac77a in drm_ioctl (fp=<optimized out>, cmd=<optimized out>,
data=0xfffffe80095a7df8) at ../../../../external/bsd/drm2/drm/drm_drv.c:673
:
radeon0 at pci1 dev 0 function 0: vendor 1002 product 9498 (rev. 0x00)
:
drm: initializing kernel modesetting (RV730 0x1002:0x9498 0x1787:0x2009).
drm: register mmio base: 0xfbef0000
drm: register mmio size: 65536
drm kern info: ATOM BIOS: RV730PRO
radeon0: info: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used)
radeon0: info: GTT: 1024M 0x0000000040000000 - 0x000000007FFFFFFF
drm: Detected VRAM RAM=400M, BAR=256M
drm: RAM width 128bits DDR
Zone kernel: Available graphics memory: 2157688 kiB
Zone dma32: Available graphics memory: 2097152 kiB
drm: radeon: 1024M of VRAM memory ready
drm: radeon: 1024M of GTT memory ready.
drm: Loading RV730 Microcode
drm: Internal thermal controller without fan control
drm: radeon: dpm initialized
drm: GART: num cpu pages 262144, num gpu pages 262144
drm: PCIE GART of 1024M enabled (table at 0x000000000025D000).
radeon0: info: WB enabled
radeon0: info: fence driver on ring 0 use gpu addr 0x0000000040000c00 and cpu addr 0x0xffff80006cd3cc00
radeon0: info: fence driver on ring 3 use gpu addr 0x0000000040000c0c and cpu addr 0x0xffff80006cd3cc0c
radeon0: info: fence driver on ring 5 use gpu addr 0x000000000005c598 and cpu addr 0x0xffff80006c93a598
drm: Supports vblank timestamp caching Rev 2 (21.10.2013).
drm: Driver supports precise vblank timestamp query.
radeon0: interrupting at ioapic0 pin 16 (radeon)
drm: radeon: irq initialized.
drm: ring test on 0 succeeded in 1 usecs
drm: ring test on 3 succeeded in 1 usecs
drm: ring test on 5 succeeded in 1 usecs
drm: UVD initialized successfully.
drm: ib test on ring 0 succeeded in 0 usecs
drm: ib test on ring 3 succeeded in 0 usecs
drm: ib test on ring 5 succeeded
drm: Radeon Display Connectors
drm: Connector 0:
drm: HDMI-A-1
drm: HPD2
drm: DDC: 0x7f10 0x7f10 0x7f14 0x7f14 0x7f18 0x7f18 0x7f1c 0x7f1c
drm: Encoders:
drm: DFP2: INTERNAL_UNIPHY1
drm: Connector 1:
drm: VGA-1
drm: DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c
drm: Encoders:
drm: CRT2: INTERNAL_KLDSCP_DAC2
drm: Connector 2:
drm: DVI-I-1
drm: HPD1
drm: DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c
drm: Encoders:
drm: CRT1: INTERNAL_KLDSCP_DAC1
drm: DFP1: INTERNAL_UNIPHY
radeondrmkmsfb0 at radeon0
radeon0: info: registered panic notifier
radeondrmkmsfb0: framebuffer at 0xffff80006cf5e000, size 1600x1200, depth 32, stride 6400
WARNING: splash_render: not initialized
wsdisplay0 at radeondrmkmsfb0 kbdmux 1: console (default, vt100 emulation), using wskbd0
wsmux1: connecting to wsdisplay0
>How-To-Repeat:
as above
>Fix:
Dunno. I have a crash dump so let me know if there's anything else I
should extract.
Home |
Main Index |
Thread Index |
Old Index