sandbox/bugs/LHydro_bug.c
Minimal model for bug in multi-layer model
This is not a bug, or rather it is a bug in your code. You are
overwriting the pointer ‘H’ to a field you allocated (in
out0
) with an already allocated field (hl[0]
).
This causes the problem which you correctly describe below. The moral of
the story is that you have to be careful when manipulating field
pointers / lists.
compile with qcc -autolink -g -lm -o LHydro_bug LHydro_bug.c Model crashes with segmentation fault. What I think happens is that at the end of event out0 the model deletes hl[0] as well as the scalar created in the event.
Does not happen if layered/remap.h is not included Does not happen if the 2 lines in out0 are replaced by the commented out line
#include "layered/hydro.h"
#include "layered/remap.h"
int main()
{
=2;
nl(1 << 6);
init_grid run();
}
event out0 (t = 0.)
{
scalar H[];
= hl[0];
H //scalar H = hl[0];
}