Because this is a compilation error of the precompiled source, the precompiled source is already available. Just dump the precompiled source to a file, and look at the line where the bug happens. Possibly you can find out what was the bug with this.
In the C or C++ file's Property sheet select C/C++ in the tree and then select Preprocessor. There is a switch 'Preprocess to a File'. When you switch it on, it will generate a preprocessed output, instead of compiling the file at the next build. The file will be named after your source file with a .i extension and is put in the intermediate directory where the object files are. (I think it's possible to put elsewhere with a different name, but not in the Express version.)
Your getPoint and getNodeFromCoord functions don't always return a value. (Possibly a C heirloom that they can be compiled.) They don't return values if the coordinates you're searching for is not in the list. I assume that out of bounds coordinates are not listed, so their behavior are undefined in this case. And that might cause your problem. Please try if adding proper boundary checking in aStar and error checking in getPoint and getNodeFromCoord solve your problem or not.
"What is in the /Library/Frameworks/SDL2.framework/ directory?"
Your possible answer: "yeah, does that directory take you directly to the header files."
If this is your answer for the question (not clear to me), that's a problem, because you used "/Library/Frameworks/SDL2.framework/Headers" directory for header files in your post.
"My include directory points to a folder containing a folder called SDL2, so I use #include <SDL2/SDL.h>"
But in your code there is no SDL2: "#include<SDL.h>".
"Also I link to: -lSDL2main -lSDL2"
But in your post you are linking with this: "-lSDL2".
Also you didn't say what was the actual error message. It couldn't find the library file, or the include file? So the linking failed or the compilation?
My guess is that your problem is that you use a Macintosh framework, which is a special beast. You have to use the -framework option to link it, and possible the -F option to set the path where the frameworks are.
There is a shared state in this synchronization (LockState). If you want to access it from both threads you have to synchronize these accesses. One way is to use hardware memory barriers before and after the access of the LockState. This will block the instruction and memory access reordering of the compiler and processor and synchronizes memory. The other way is to use an atomic read/write which locks the the memory bus for the time of the memory access. (This is what a CAS-cycle does.) But in the current state of the code it synchronizes the two threads only with luck.
In kdiff3 you have 3 buttons: A, B, C. A is the original and B and C is the two changed version. When you steps on the conflict with the arrow buttons, just press both B and C buttons. It will put both changed codes there. You can even press A, and all the three codes will be inserted. The order of the inserted texts is based on the order you pressed the buttons. But you can even edit the result in the lower merge window.