I just had a thought and ran truss against the pid, it appears to be stuck in some insane loop:
statfs("/var/cache/pkg",0x7fffffffdfa8) ERR#2 'No such file or directory'
mkdir("/var",0777) ERR#17 'File exists'
mkdir("/var/cache",0777) ERR#17 'File exists'
mkdir("/var/cache/pkg",0777) ERR#17 'File exists'
statfs("/var/cache/pkg",0x7fffffffdfa8) ERR#2 'No such file or directory'
mkdir("/var",0777) ERR#17 'File exists'
mkdir("/var/cache",0777) ERR#17 'File exists'
mkdir("/var/cache/pkg",0777) ERR#17 'File exists'
statfs("/var/cache/pkg",0x7fffffffdfa8) ERR#2 'No such file or directory'
^C
[2.3-RELEASE][admin@router.home]/root:
I renamed pkg to pkg.old and voila; the pkg upgrade worked. I don't understand how this happened though. This box was upgraded 2.1.x -> 2.2.x -> 2.3-RELEASE without any issues o.0
The file that was there was a symlink too:
lrwxr-xr-x 1 root wheel 24 May 5 21:02 pkg.old -> ../../root/var/cache/pkg