Sorry but I don't know the best way for fixing it.

Just one question:
gint host_target1 = HOST_TARGET1;
g_signal_connect(G_OBJECT (button), "clicked", G_CALLBACK (gtkui_button_callback), (gpointer)&host_target1);

is different from
g_signal_connect(G_OBJECT (button), "clicked", G_CALLBACK (gtkui_button_callback), (gpointer)HOST_TARGET1);

in one case you are passing (gpointer)&HOST_TARGET1 (gpointer)&1
in the other you are passing (gpointer)1

isn't that different?

sorry but I know really NULL of gtk stuff :(