I'd like to make a comment on the proper use of piazza and the general process of debugging your labs. The purpose of the lab is to get you to engage in the thrill and challenges of concurrency and parallelism. When you hit that realization smack in the face that you don't understand why something is happening it is easy to look around for support. While it is a natural reaction, stand up, get a snack, turn on some music, do whatever it takes to shake it off, but then get your head back in the game and try to figure out what went wrong. That moment of early resistance is not the moment to post to piazza.
In general, if your question is about implementation details, APIs, etc. (e.g., "Why do I get this error code?") or something about the semantics of a particular API or function, that is an appropriate use of documentation or 1:1 TA engagement through email, and not appropriate for piazza. Piazza is for more general questions about the assignment, and information that is relevant to everyone.
There are certain topics that form the technical heart of the lab, and the point of the lab is to engage such issues, rather than check for solutions and hints others might have happened upon and solved before you.
That said, there is an important balance to strike between engaging difficult material and learning from it, and just banging your head against a wall. It is fine to ask for help, and I strongly encourage you to do so if you have truly made a reasonable effort on your own first. However, when you need help, please try to engage me or the TA directly through email first, and we can move any dialog that is relevant to all to Piazza if it is indeed appropriate.
Also, please, please, please: start early. Any obstacles can be overcome, but sometimes it takes time. Do not wait until the last minute!