On Sun, Oct 6, 2013 at 4:17 PM, Toralf Förster <[email protected]> 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 -- [email protected]
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
--
To unsubscribe from this list: send the line "unsubscribe trinity" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html