On 10/06/2013 08:38 PM, Geert Uytterhoeven wrote:
> On Sun, Oct 6, 2013 at 4:17 PM, Toralf Förster <toralf.foers...@gmx.de> wrote:
>> The UML stopped here :
>> ...
>>                 if (unlikely(task_ratelimit == 0)) {
>>                         period = max_pause;
>>                         pause = max_pause;
>>                         BUG_ON(pause < 0);
>>                         goto pause;
>>                 }
>>                 BUG_ON(pages_dirtied < 0);
>>                 BUG_ON(task_ratelimit < 0);
>>                 period = HZ * pages_dirtied / task_ratelimit;
>>                 BUG_ON(period < 0);         <----------------------here
> 
> So pages_dirtied becomes that big compared to task_ratelimit (both are
> "unsigned long"), that period (which is "long", just like "pause") overflows
> into a negative number.
> 
> This is indeed much more likely to happen on 32-bit.
> 
>> The back trace is :
> 
>> #9  0x08411c64 in balance_dirty_pages (pages_dirtied=9, mapping=<optimized 
>> out>) at mm/page-writeback.c:1471
> 
> But here pages_dirtied is only 9??
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- 
> ge...@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like 
> that.
>                                 -- Linus Torvalds
> 
Well, this points to an overflow or ? :

tfoerste@n22 ~/devel/linux $ nl -ba mm/page-writeback.c | grep -A 5 -B 5 1468
  1463                          BUG_ON(pause < 0);
  1464                          goto pause;
  1465                  }
  1466                  period = HZ * pages_dirtied / task_ratelimit;
  1467                  pause = period;
  1468                  BUG_ON(pause < 0 && pages_dirtied > 0 && task_ratelimit 
> 0);
  1469                  if (current->dirty_paused_when)
  1470                          pause -= now - current->dirty_paused_when;
  1471                  /*
  1472                   * For less than 1s think time (ext3/4 may block the 
dirtier
  1473                   * for up to 800ms from time to time on 1-HDD; so does 
xfs,


and the back trace is :

tfoerste@n22 ~/devel/linux $ gdb --core=/mnt/ramdisk/core 
/home/tfoerste/devel/linux/linux -batch -ex bt
[New LWP 13163]
Core was generated by `/home/tfoerste/devel/linux/linux earlyprintk 
ubda=/home/tfoerste/virtual/uml/tr'.
Program terminated with signal 6, Aborted.
#0  0xb77d2424 in __kernel_vsyscall ()
#0  0xb77d2424 in __kernel_vsyscall ()
#1  0x083b33b5 in kill ()
#2  0x0807190d in uml_abort () at arch/um/os-Linux/util.c:93
#3  0x08071c45 in os_dump_core () at arch/um/os-Linux/util.c:148
#4  0x08061417 in panic_exit (self=0x85b9558 <panic_exit_notifier>, unused1=0, 
unused2=0x85ef720 <buf.16084>) at arch/um/kernel/um_arch.c:240
#5  0x0809a7d8 in notifier_call_chain (nl=0x0, val=0, v=0x85ef720 <buf.16084>, 
nr_to_call=-2, nr_calls=0x0) at kernel/notifier.c:93
#6  0x0809a923 in __atomic_notifier_call_chain (nr_calls=<optimized out>, 
nr_to_call=<optimized out>, v=<optimized out>, val=<optimized out>, 
nh=<optimized out>) at kernel/notifier.c:182
#7  atomic_notifier_call_chain (nh=0x85ef704 <panic_notifier_list>, val=0, 
v=0x85ef720 <buf.16084>) at kernel/notifier.c:191
#8  0x08410d1c in panic (fmt=0x0) at kernel/panic.c:130
#9  0x08411c6c in balance_dirty_pages (pages_dirtied=0, mapping=<optimized 
out>) at mm/page-writeback.c:1468
#10 0x080d1ce4 in balance_dirty_pages_ratelimited (mapping=0x6) at 
mm/page-writeback.c:1657
#11 0x080e2d0c in __do_fault (mm=0x47b09600, vma=0x48bc9e58, 
address=1082572800, pmd=0x0, pgoff=0, flags=1167616488, orig_pte=<incomplete 
type>) at mm/memory.c:3452
#12 0x080e5286 in do_nonlinear_fault (orig_pte=..., flags=<optimized out>, 
pmd=<optimized out>, address=<optimized out>, vma=<optimized out>, 
mm=<optimized out>, page_table=<optimized out>) at mm/memory.c:3518
#13 handle_pte_fault (flags=<optimized out>, pmd=<optimized out>, 
pte=<optimized out>, address=<optimized out>, vma=<optimized out>, 
mm=<optimized out>) at mm/memory.c:3717
#14 __handle_mm_fault (flags=<optimized out>, address=<optimized out>, 
vma=<optimized out>, mm=<optimized out>) at mm/memory.c:3845
#15 handle_mm_fault (mm=0x47b09600, vma=0x48bc9e58, address=1082572800, 
flags=1) at mm/memory.c:3868
#16 0x080e5a07 in __get_user_pages (tsk=0x47a3ea00, mm=0x47b09600, 
start=1082572800, nr_pages=962, gup_flags=519, pages=0x47b96120, vmas=0x0, 
nonblocking=0x0) at mm/memory.c:1822
#17 0x080e5cc3 in get_user_pages (tsk=0x0, mm=0x0, start=0, nr_pages=0, 
write=1, force=0, pages=0x4789fb9c, vmas=0x6) at mm/memory.c:2019
#18 0x08140d0e in aio_setup_ring (ctx=<optimized out>) at fs/aio.c:340
#19 ioctx_alloc (nr_events=<optimized out>) at fs/aio.c:605
#20 SYSC_io_setup (ctxp=<optimized out>, nr_events=<optimized out>) at 
fs/aio.c:1122
#21 SyS_io_setup (nr_events=-2147422135, ctxp=135045120) at fs/aio.c:1105
#22 0x080619c2 in handle_syscall (r=0x47a3ebd4) at 
arch/um/kernel/skas/syscall.c:35
#23 0x08073f2d in handle_trap (local_using_sysemu=<optimized out>, 
regs=<optimized out>, pid=<optimized out>) at 
arch/um/os-Linux/skas/process.c:198
#24 userspace (regs=0x47a3ebd4) at arch/um/os-Linux/skas/process.c:431
#25 0x0805e6ac in fork_handler () at arch/um/kernel/process.c:160
#26 0x5a5a5a5a in ?? ()

-- 
MfG/Sincerely
Toralf Förster
pgp finger print: 7B1A 07F4 EC82 0F90 D4C2 8936 872A E508 7DB6 9DA3

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134791&iu=/4140/ostg.clktrk
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to