On Sat, 8 Jan 2005, Timo Sirainen wrote:
On 8.1.2005, at 01:59, Joseph Tam wrote:
Subsequent versions still crashed and I looked into the problem further. Specifically it crashes at this line
offset = *((const uint64_t *)data);
when "data" assumes a non-64 bit aligned value. At first I thought that 64-bit ints should always be aligned on 64-bit boundaries, but when I isolated this code into a standalone executable to demonstrate it (no arguments to cause a crash, one argument is OK):
The bug is that the data pointer in there should always be 64bit aligned. There exists code which tries to keep it 64bit aligned, but apparently there's a bug somewhere. I haven't yet tried to find it. So many other things to do..
Thanks, Timo. If it helps, I traced the non-64 aligned value to this statement,
dovecot-1.0-test59/src/lib-index/mail-index-view.c:394
*data_r = offset == 0 ? NULL : CONST_PTR_OFFSET(rec, offset);
rec=ff2500bc offset=8 -> *data_r=ff2500c4
Joseph Tam tam@math.ubc.ca