Expect и Threads не слишком хорошо сочетаются друг с другом.Это сложность, которую вы получаете от fork () + потоков, которые могут сильно кусаться и приводить к тупикам и всевозможным уродствам.Обычно не рекомендуется объединять их.
Если вам действительно нужен Expect и дополнительный параллелизм, многопоточный подход к многопоточному драйверу и один ожидаемый многопоточный процесс могут работать лучше.Если вы использовали пакет tcllibs comm, то API для отправки команд также не сильно отличаются (в большинстве случаев вы пропускаете tsv и tpool, если вы используете comm).
Но это не должно обязательно вызывать сегфоКакую комбинацию ядра Expect / Threads / Tcl вы использовали (например, пакет ActiveStates ActiveTcl или что-то само скомпилированное на необычной платформе?)