I can argue that this heuristic is totally relevant for 'int a[1100]' because lots of scientific code uses single-dimensional arrays as n-dimensional:
#define N 100 int a[N * N]; ... a[i * N + j]; // off-by-one in 'i' will lead to off-by-N And no, I did not try to investigate if a better heuristic is possible. The basis for the current heuristic is that it does not increase the memory footprint (for globals) by more than X%. --kcc On Mon, Jul 17, 2017 at 2:41 AM, Yuri Gribov <[email protected]> wrote: > On Mon, Jul 17, 2017 at 10:25 AM, 'Alexander Potapenko' via > address-sanitizer <[email protected]> wrote: > > On Sat, Jul 15, 2017 at 4:39 PM, Yuri Gribov <[email protected]> > wrote: > >> Hi all, > >> > >> From reading the original feature request in > >> https://github.com/google/sanitizers/issues/8 it seems that adaptive > >> redzones were mainly meant for catching overflows in arrays of large > >> objects e.g. > >> > >> struct { > >> int a[10]; > >> int x; > >> } a[100]; > >> a[101].x = 0; // Skips redzone > >> > >> Current adaptation only considers size of array as a whole so would > >> add similarly big redzone for same-sized > >> > >> int a[1100]; > >> > >> even though risk of large overflow offset here seems to be much lower. > >> > >> Has anyone considered selecting redzone based on array element size > >> rather than array size? Firstly this would allow more intelligent > >> redzone selection (current approach does not guarantee that generated > >> redzone will cover one array element) and also reduce memory pressure > >> (which is important for "embedded" targets). > > > > I totally agree that for compound type arrays the redzone size must be > > based on the array element size. > > > > Not sure if we need to reduce the redzone size for big arrays of > > scalars, as e.g. char arrays are sometimes used as opaque storage for > > compound types. > > Good point. > > > Do you have any evidence how big is the memory overhead caused by > > redzones in this case? > > Not yet, this is something we'll need to investigate (my question was > mainly whether it makes sense to investigate this). > > -Y > > -- > You received this message because you are subscribed to the Google Groups > "address-sanitizer" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "address-sanitizer" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
