Запрещена ли множественная инициализация движка Perl (C / C ++)?

Мне интересно, безопасна ли множественная инициализация движка perl в одном и том же процессе. Под инициализацией я подразумеваю такую ​​комбинацию:

PERL_SYS_INIT3(&argc,&argv,&env);
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, NULL, argc, argv, (char **)NULL);
perl_run(my_perl);
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();

и это делается один за другим, без какого-либо параллелизма.

Моя проблема в том, что некоторые сценарии perl вызывают сбой движка perl (внутри Perl_op_free) во время второго запуска. Я изменил perl.exe (perlmain.c) просто для запуска движка несколько раз без моего мусора, и я получил тот же результат:

//perlmain.c
int
main(int argc, char **argv, char **env)
{
int res;
res = RunPerl(argc,argv,env);
res = RunPerl(argc,argv,env);
return res;
}

Многократная инициализация запрещена? Или это нужно сделать по-другому? Я пробовал Perl движки с 5,8 до 5,18, у всех, похоже, такая же проблема.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]