Podes estar a ficar sem memória... reparei que estás a usar a String e isso pode acontecer. No entanto, o shield bloqueia se tiver dados numa socket que não foram lidos.
Então convém garantir que não tens nada numa socket antes de fechares a ligacão. Estás a fazer isso aqui?