Puoi anche scrivere, in worker(), qualcosa come:

codice:
int x = *((int *) arg);
non è detto che sia quella l'origine del problema, ti sto segnalando ciò che di anomalo si nota nel codice che hai postato ma per il resto il problema potrebbe essere anche altrove.