panic on vm_page_cache_transfer: object 0xfffffff0035508000's type is not compatible with cache pages

Willem Jan Withagen wjw at digiware.nl
Sat Mar 19 11:34:55 UTC 2011


On 18-3-2011 16:38, Alan Cox wrote:
> On 03/08/2011 08:15, John Baldwin wrote:
>> On Tuesday, March 08, 2011 5:54:36 am Willem Jan Withagen wrote:
>>> System:
>>>
>>> FreeBSD zfs.digiware.nl 8.2-STABLE FreeBSD 8.2-STABLE #1: Sat Feb 26
>>> 06:28:43 CET 2011
>>> root at zfs.digiware.nl:/usr/obj/usr/src/src8/src/sys/ZFS  amd64
>>>
>>> Don't have a serial console, so I wrote down the traceback.
>>> But my guess is that that is not enough, however I needed the system so
>>> I rebooted.
>>>
>>> tb:
>>> vm_object_split        at .... +0x125
>>> vm_space_fork        at .... +0x3f7
>>> fork1            at .... +0x6a9
>>> fork            at .... +0xee
>>> syscall_entr        at ....    +1c
>>> syscall            at ....    +4c
>>>
>>> rip = 0x8006bc39c
>>> rsp = 0x7fffffffe9d8
>>> rbp = 0x800a04470
>>>
>>> It looks a lot like what I find on
>>> http://people.freebsd.org/~pho/stress/log/kostik079.html
>>>
>>> But my system is amd64, with 8Gb RAM and is fully ZFS based
>>> with swap on 2 gpt freebsd-swap partitions.
>>>
>>> System crashed last night around 1:30, which is when a few large rsync
>>> backups are coming in.
>>>
>>> Would I be able to call doadump to obtain something usefull afterward
>>> (provided I have savecore set?)
>> Hmm, judging from the info at the URL above, I'm not sure what to make
>> of this
>> assertion.  In vm_object_split(), the 'new_object' is always
>> OBJT_DEFAULT, so
>> it will always fail that half of the assertion.  In fact, this is the
>> only
>> place that vm_page_cache_transfer() is called, so 'new_object->type ==
>> OBJT_SWAP' is pretty much guaranteed to almost never be true.
>>
>> I guess it is assuming that swap_pager_copy() would have always converted
>> 'new_object' to OBJT_SWAP if it had any cache pages?  Perhaps that is
>> a bogus
>> assumption if 'orig_object' only has cache pages and no
>> currently-swapped out
>> pages (or if the swapped out pages are not in the range of the new
>> object)?
>>
>> I've cc'd Alan to see if he has any ideas.
>>
> 
> Yes, it is assuming that the object is converted to OBJT_SWAP.  As a
> rule, for a page to be PG_CACHE, it should exist somewhere on secondary
> storage.

The panic has only occured twice thusfar, since I upgraded to FreeBSD
8.2-STABLE (ZFS) #1: Sat Feb 26 06:28:43 CET 2011.

But I have the feeling that in due course, it'll return again.
So if there are any suggestions on how to proceed, I would be happy to
have a go at them.

--WjW



More information about the freebsd-stable mailing list