Запускаем долгое вычисление в ghci, жмём ctrl+c, вычисление валится с user interrupt exception. Пишем ей долгий обработчик user interrupt exception, жмём ctrl+c, проваливаемся в хэндлер, жмём ctrl+c и проваливаемся в бездну. Хэндлер по ctrl+c не валится. Окей. Маскирование? Переписываем всё с catch на try. Теперь обработчик ctrl+c точно размаскирован, точно находится в том же треде. Но ctrl+c не ловит.