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