Are you really sure you want to unset least significant bit of address of some place in memory? I guess, you want to do that with value located at place that has this address. Maybe, you need
size_t * next_chunk = stack_mem.start;
*next_chunk &= ~0 << 1;
UPD: At all probabilities, pointer value (i.e. memory address) will be aligned, in other words, it has last one or two bits equal to zero.
UPD2: To do kind of aligning by yourself, you need remove asterisk at the beginning of second line
size_t * next_chunk = stack_mem.start;
next_chunk &= ~0 << 1;