00:39 Riastradh: see https://netbsd.org/~plunky/redrm7.txt for full dmesg & bt 00:40 Riastradh: system had been up for most of the week 00:44 > booo 00:45 > G84 ... is old yes? i guess so, core2 system? 00:47 yes, is T61p 00:49 > ugh 00:49 > i wonder if that's an error case 00:50 so probably 2008 or so; not sure exactly as I bought it secondhand (but at the tail end of the on-site warranty and I had a new motherboard :) 00:57 *departs* 01:36 > pretty sure it's this: 01:36 > ret = nouveau_bo_init(nvbo, size, align, flags, NULL, NULL); 01:36 > if (ret) { 01:36 > nouveau_bo_ref(NULL, &nvbo); 01:37 > oh it could be a few lines up too 01:37 > ret = drm_gem_object_init(drm->dev, &nvbo->bo.base, size); 01:38 > that can also fail and call nouveau_bo_ref() which will always call ttm_bo_put() on *(&nvbo) passed in 01:41 > ah no, drm_gem_object_init() can't fail on netbsd 01:42 > pretty sure that *both* of these shouldn't call nouveau_bo_ref(), which is only valid if nouveau_bo_init() worked 01:43 > even then i'm not sure. 01:45 > i think i see the problem. 01:45 > ttm_bo_init_reserved() can fail before it calls kref_init(&bo->kref), which leads to this 01:46 > so it is wrong for the drm_gem_object_init() call always (but should never trigger one netbsd since it can't fail), and perhaps can simply avoid this by moving the kref_init()s before the potential error returns current above it.