Сталкивался с этой проблемой, трап возникал позже, на Sleep. Не решил, деталей уже не помню, оставил комментарий в коде.
## Код:
```
(* something wrong with popen on BlackBox, it traps later on Ta_Basics.Sleep *)
      pr.f := Tl.popen(str, "r");
      IF pr.f = 0 THEN
         res := -1
      ELSE
         pr.fd := Tl.fileno(pr.f);
         IF Tl.fcntl(pr.fd, Tl.F_SETFL, Tl.O_NONBLOCK) < 0 THEN
            res := -1
         ELSE
            res := 0
         END
      END
```
