lkml.org 
[lkml]   [2002]   [Dec]   [27]   [last100]   RSS-feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Complete thread (EXPERIMENTAL)
/
DateFri, 27 Dec 2002 15:20:33 +0100
Frombert hubert <>
Subjectswsusp in 2.5.53 BUG on kernel/suspend.c line 718
Digg This
Hi!

I wanted to try software suspend again in Linux as 2.5 is doing almost everything pretty well for me already.

I boot my uniprocessor Pentium III laptop with:

kernel (hd0,0)/boot/vmlinuz-2.5.53 root=/dev/hda1 resume=/dev/hda2
# swapon -s
Filename Type Size Used Priority
/dev/hda2 partition 489972 0 -1
$ cat /proc/meminfo
MemTotal: 191240 kB

When I suspend, things proceed swimmingly, I see a lot of dots printed and processes entering the refrigerator, until line 718 is hit in kernel/suspend.c:

   if (nr_copy_pages != count_and_copy_data_pages(pagedir_nosave)) /* copy */
       BUG();
When I aded some printks, it turns out that count_and_copy_data pages returns 5440 (decimal) and that nr_copy_pages is 5458, 18 more. Before this function is called, the address c034c000 was printed twice prefixed with 'nosave', once during each call of count_and_copy_data_pages it appears.
So it appears some pages were freed in the critical section!
Another interesting note is that pdflush reported 'Bogus wakeup' twice during the refrigeration phase. I also see two pdflushes running.
If I remove the BUG();, on resume it crashes on an unhandled NULL pointer, the EIP is in a function aptly named do_magic() at +0x9e.
Compiler is gcc 3.2.1. Anything I can do to help, just let me know!
Regards,

bert

-- 
http://www.PowerDNS.com      Open source, database driven DNS Software 
http://lartc.org           Linux Advanced Routing & Traffic Control HOWTO
http://netherlabs.nl                         Consulting
\
ISP Services
Valid XHTML 1.0!\ /
Valid CSS! Last update: 2005-03-22 12:31    [W:1.747 / U:0.220 seconds]
©2003-2005 Jasper Spaans