On Sun, 07 Aug 2011, Erland Sommarskog wrote: > > I was able to resolve the problem. Although I ran into another, eh, > interesting issue. > > The problem was that in my Makefile.pl I had: > > 'CCFLAGS' => '/MT /W3', # Debug-flag: '/Zi', > 'OPTIMIZE' => '/O2', > > That is, I entirely overrode whatever came with $Config. I got away with > it for a long time, but finally time caught up with me. I changed this to: > > my $ccflags = $Config{'ccflags'}; > my $optimize = $Config{'optimize'}; > $ccflags =~ s/-MD\b/-MT/; > $optimize =~ s/-MD\b/-MT/; > $ccflags =~ s/-O1\b/-O2/; > $optimize =~ s/-O1\b/-O2/; > > And everything works fine. Exactly what in $Config{'ccflags'} that was > crucial I did not investigate. (But I don't use time_t.)
*Everyone* is using time_t if they are writing XS code. The interpreter structure contains PL_basetime, which is of Time_t, which is #define'd to be the same as time_t (look in intrpvar.h): PERLVAR(Ibasetime, Time_t) /* $^T */ So if you use an incorrectly sized time_t, then all variables in the Perl interpreter structure beyond PL_basetime will have the wrong offset in your XS code and your extension will most likely crash. Feel free to append -U_USE_32BIT_TIME_T again to the end of your CCFLAGS to verify that this was indeed the problem. :) Cheers, -Jan