John E. Malmberg wrote:
John E. Malmberg wrote:

John E. Malmberg wrote:

Craig A. Berry wrote:

At 6:29 PM -0500 3/4/06, John E. Malmberg wrote:
Thanks, applied as #27376.


It is not going to be enough. I found another case in vms.c that needs fixing, and then miniperl died with an access violation when I restarted the MMK build.

Here is what vms.c needs to get it to build with threads. I have not yet run it through the tests.

Also, building threaded with -Dunlink_all_versions is still broken. This should be a run time option anyway.

The routine vms_split_path() needs to have the pTHX_ on the declaration and the aTHX_ where it is called.

The access violation was from the Newx() routine being present just before the PerlMem_malloc() that was suppose to replace it.

Newx()/Safefree() can not be called by any path taken by the vms_image_init() and need to be replace with PerlMem_malloc() and PerlMem_free()

I am starting the tests now, and will check the results tomorrow.


EAGLE> search thread_test.log failed
t/comp/cpp.............................FAILED--no leader found

This was caused by access violations because Newx() is being used to allocate memory in a path taken by vms_image_init.

I changed the Newx calls to PerlMem_malloc to get around the problem, and now I am trying to find the cause of:

MCR perl_build_root:[000000]miniperl.exe "-I[---.lib]" "-I[---.lib]" "-MExtUtils::Command" -e mv Descrip.MMS Descrip.MMS_old
panic: free from wrong pool.
Scalars leaked: 1
%SYSTEM-F-ABORT, abort

Unfortunately that one is not reproducible on demand, but this more complex case is:

        Making Time/HiRes (dynamic)
Configuring Time::HiRes...
No syscall()...
Looking for gettimeofday()... found.
Looking for setitimer()... found.
Looking for getitimer()... found.
You have interval timers (both setitimer and getitimer).
Looking for ualarm()... found.
Looking for usleep()... found.
Looking for nanosleep()... believing $Config{d_nanosleep}... found.
You can mix subsecond sleeps with signals, if you want to.
(It's still not portable, though.)
panic: free from wrong pool at makefile.pl line 135.
Scalars leaked: 1
Looking for clock_gettime()...
%SYSTEM-F-ABORT, abort
%SYSTEM-F-ABORT, abort
%MMK-F-ERRUPD, error status %X0000002C occurred when updating target DYNEXT

The command that invokes this is:
EAGLE> set def PROJECT_ROOT:[PERL-BLEAD.ext.Time.hires]
EAGLE> MCR [---]dbgminiperl.exe "-I[---.lib]" "-I[---.lib]" -
Makefile.PL "INST_LIB=[---.lib]" "INST_ARCHLIB=[---.lib]" "PERL_CORE=1"

Unfortunately the VMS debugger is not telling me who allocated the memory incorrectly, as it is the Perl interpret that is calling the free command, not one of the routines in VMS.C.

As I write this, some progress: The bug appears when the perl script invokes the system() call to compile a program, so now I know where to set the breakpoints and verify what I did wrong.

I have also found a few memory leaks in this investigation. setup_argstr() allocates memory for the command string, and expects the caller to eventually free it.

-John
[EMAIL PROTECTED]
Personal Opinion Only

Reply via email to