@NO2 is right that the object-copying problems with hand.fingers() have been fixed to the best of our knowledge.
And we resolved @katiemooredev's crash in a side thread.
Nowadays one of the most common pitfalls is allocating a controller and listener but not saving these in persistent member variables. The listener then gets garbage-collected as soon as it goes out of scope, and the program crashes as soon as native code tries to call back into that object.
To remove this pitfall I believe there may be a possible fix in the SWIG code to set the object as allocated so that the GC doesn't kick in unless removeListener() gets called. Haven't had a chance to delve into this yet.
Java developers may also prefer to avoid the listener model altogether. Some tips: http://www.mrlonee.com/?p=502