memory align cause weird bug
test123
test123 at gmail.com
Mon May 9 04:42:59 UTC 2022
I has a program use with a bug cause me long time to find.
I use struct inside other struct, children struct has a memory
pointer like this:
```d
struct Block {
void* s;
}
```
And it can be put anywhere in parent struct, when use with fiber,
some time it require member align with 16.
```d
auto diff = (cast(size_t) &(context.block)) % (size_t.sizeof *2);
```
If the diff is 8, I get error like this:
```sh
==32255==ERROR: AddressSanitizer: SEGV on unknown address (pc
0x59808054d4d9 bp 0x716c2111ad10 sp 0x716c2111abf0 T0)
==32255==The signal is caused by a READ memory access.
==32255==Hint: this fault was caused by a dereference of a high
value address (see register values below). Disassemble the
provided pc to learn which register was used.
```
I use 1.29.0-git-0b81277.
This is a new bug, and it work for my old ldc 1.28.1 on alpine.
More information about the digitalmars-d-ldc
mailing list