Speicherleck in TCL?

Gast #4763200
Lesenswert?

Hallo Gemeinde,

ist hier jemand mit TCL unter C unterwegs?

Ich habe ein seltsames Problem: Wenn ich den TCL-Interpreter in einem 
Thread erzeuge, dann frisst das Test-Programm Speicher. Wenn ich das 
ganze in einem einzigen Thread mache, wird der Speicher nicht gefressen.

Folgendes minimalisierte Programm:
1
#include <stdio.h>
2
#include <tcl.h>
3
#include <pthread.h>
4

5
void *call_run(void *arg) {
6

7
  printf("Thread created\n");
8

9
  Tcl_Interp *interp = Tcl_CreateInterp();
10
  usleep(1000000);
11
  Tcl_DeleteInterp(interp);
12

13
  printf("Thread destroyed\n");
14

15
  return NULL;
16
}
17

18
int main(int argc, char *argv[]) {
19

20
  Tcl_FindExecutable(argv[0]);
21

22
  for (;;) {
23

24
    //(void *) call_run(NULL);
25

26
    pthread_t th;
27
    pthread_create(&th, NULL, &call_run, NULL);
28
    pthread_detach(th);
29

30
    usleep(2000000);
31
  }
32

33
  return 0;
34
}

In dieser Form wird der Speicher gefressen, wenn ich die Zeile '(void *) 
call_run(NULL);' entkommentiere und stattdessen die drei folgenden 
Zeilen auskommentiere, dann wird der Speicher nicht gefressen.

Festgestellt habe ich das unter Ubuntu 16.04, TCL 8.6.1

Hat jemand eine Idee dazu?

Danke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren