Solucionadooooooo
. El problema venia derivado por la llamada a la función SetCommMask() desde una función llamada desde el Timer y desde otra llamada desde el hilo de comunicación. Típico pero invisible al estar dentro de funciones llamadas dentro de otras y cuya llamada depende de la coincidencia en el tiempo. Una pena de que el Debugger no sea capaz de informarte de ello.
Saludos.