update coroutine:
    1. use pre-allocated stack instead of running-copy
    2. use mprotect to avoid stack-overflow