# reboot after panic? Please help me.



## varnie (Nov 10, 2009)

Hello all.

today i've discovered then i am unable to shutdown computer running FreeBSD 7.2-RELEASE-p4.
here is what i get in /var/log/messages:

```
Nov 10 18:04:38 varnie savecore: reboot after panic: swap_pager_force_pagein: read from swap failed
Nov 10 18:04:38 varnie savecore: writing core to vmcore.2
```
my computer then reboots and produces coredump.

what should i check firstly? if it helps, i've added additional swap on partition few days ago.


----------



## SirDice (Nov 10, 2009)

varnie said:
			
		

> what should i check firstly? if it helps, i've added additional swap on partition few days ago.


Check that disk for read errors. You may have some bad blocks on it. If it's an IDE or SATA disk and it has bad blocks replace the drive.


----------



## varnie (Nov 10, 2009)

i've removed an additional swap space from the partition and it seems the issue disappeared. i'm checking my harddrive for bad sectors right now..


----------



## varnie (Nov 10, 2009)

i've experienced absolutely no problems with harddrive. 
well, i've performed checking for bad sectors and there's none.

here is info:

```
varnie# recoverdisk /dev/ad16
        start    size     block-len state          done     remaining    % done
 500107837440   24576         24576     0  500107862016             0 100.00000
Completed

varnie# dd if=/dev/ad16 of=/dev/null bs=1m
476940+1 records in
476940+1 records out
500107862016 bytes transferred in 6988.920501 secs (71557240 bytes/sec)
```

i ask for yours help, guys. what to do to fix that kernel error?


----------



## varnie (Nov 10, 2009)

from the generated vmcores i've been able to get the source file. here it is, "swap_pager.c", 1571 line (remember, i am using  FreeBSD 7.2-RELEASE-p4 with the GENERIC kernel). here is this code:

```
/*
 * SWP_PAGER_FORCE_PAGEIN() - force a swap block to be paged in
 *
 *	This routine dissociates the page at the given index within a
 *	swap block from its backing store, paging it in if necessary.
 *	If the page is paged in, it is placed in the inactive queue,
 *	since it had its backing store ripped out from under it.
 *	We also attempt to swap in all other pages in the swap block,
 *	we only guarantee that the one at the specified index is
 *	paged in.
 *
 *	[B]XXX - The code to page the whole block in doesn't work, so we[/B]
 *	      [B]revert to the one-by-one behavior for now.  Sigh.[/B]
 */
static inline void
swp_pager_force_pagein(vm_object_t object, vm_pindex_t pindex)
{
	vm_page_t m;

	vm_object_pip_add(object, 1);
	m = vm_page_grab(object, pindex, VM_ALLOC_NORMAL|VM_ALLOC_RETRY);
	if (m->valid == VM_PAGE_BITS_ALL) {
		vm_object_pip_subtract(object, 1);
		vm_page_lock_queues();
		vm_page_activate(m);
		vm_page_dirty(m);
		vm_page_unlock_queues();
		vm_page_wakeup(m);
		vm_pager_page_unswapped(m);
		return;
	}

	if (swap_pager_getpages(object, &m, 1, 0) != VM_PAGER_OK)
		panic("swap_pager_force_pagein: read from swap failed");[B]/*XXX*/[/B]
	vm_object_pip_subtract(object, 1);
	vm_page_lock_queues();
	vm_page_dirty(m);
	vm_page_dontneed(m);
	vm_page_unlock_queues();
	vm_page_wakeup(m);
	vm_pager_page_unswapped(m);
}
```
it is pretty well commented and it's clear that there's some code not fully completed.

should i write a bug report to the FreeBSD officials? please guide me with the appropriate instructions. i appreciate your help!


----------



## billgates (Jan 2, 2010)

I have a swapfile="/swap0" in rc.conf


From /var/crash/info.0 :

```
Panic String: swap_pager_force_pagein: read from swap failed
```

is it preferable to "turn off" the Additional swap file or is there real danger to teh sistem ?


----------



## varnie (Jan 3, 2010)

*billgates*
hello. there is an opened bug report about this issue here.
please write there your thoughts and experience about this bug, thank you.


----------



## alie (Oct 28, 2011)

I got this issue to since upgraded to FreeBSD 9.0 and have checked my disk for errors and didn't find any issue.


----------

