As per Stephen's comment, you have a bug with your global variables. Either, your callback is being executed before whichever function is supposed to set a to the correct value had a chance to do so, or some function has changed the global a to an invalid value. Either way, when the callback is executed a is not yet/no longer a structure and you get your error.
As Stephen said, globals are a bad idea, precisely for this reason. It's very difficult to track what happens to them; any function can modify their value. It's also difficult to make sure that they're initialised in the right order, particularly when you use asynchronous functions such as callback.
You now have two options:
- go over the whole of your program and check the flow to see when a is supposed to be set to the correct value (can be anywhere in the code), see where it is being changed (again can be anywhere) and make sure that this always happen before there's a chance your callback is called.
- radically modify your code to use recommended practices such as gui handles
Neither is going to be quick. The second approach would ultimately serve you better.