Does your main have an assert(false) after the main loop? If so the return address could be set to the assert function as some kind of optimization.
Actually I call syscalls from assembly, and my _start() is also an assembly function. That is why this happens I guess. strace somehow doesn't play well with code written in .s file?