cl_dirty_max_pages (the internal representation of max_dirty_mb) is not zeroed at initialization. The function client_adjust_max_dirty is called, but it only sets it if the value is <= 0, which will be true most of the time for random memory... But not all of the time.
So sometimes cl_max_dirty_pages ends up at some random positive value. Easy fix.