I'd say that's the problem. But the fact that you didn't include the stack trace make it harder to guess. Adding synchronization won't fix your issue, as the problem is that you are likely modifying a list while traversing it.

In your code it seems that your delegate method for button in your globalControls list is is getting invoked whilst you are iterating over the list (That is, item.onClick and item.onDraw will invoke the EventHandler you have written. I noticed that you are synchronising on the list, this won't help you in this situation as it is the same thread that is accessing the list.

As Ravi mentioned earlier it is because you do not copy your List before iterating over it (in onTouchEvent) that the ConcurrentModificationException is being thrown. Make sure you copy the list before iterating over it!

As a side not you should only synchronise for the shortest possible time that you have to.