Skip Menu |
Report information
Id: 9319
Status: stalled
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: birtl00 [at] dmi.usherb.ca
Cc: bulk88 <bulk88 [at] hotmail.com>
AdminCc:

Operating System: Win32
PatchStatus: (no value)
Severity: Wishlist
Type:
Perl Version: (no value)
Fixed In: (no value)



Date: Mon, 13 May 2002 16:47:42 -0400
From: Delta <birtl00 [...] dmi.usherb.ca>
To: perlbug [...] perl.org
Subject: Perl bug -- split function
Download (untitled) / with headers
text/plain 1.4k
Hi, I got a problem with the 'split' function. I've attached a program that open each file of a directory one at a time, read the entire content of the file in a scalar, then attempt to split the data into list elements of one character each, using the empty split pattern (//). The result varies based on the input. For some files (when there are not many in the directory), it works fine. Sometimes, after having read 5-6 files, the split function begins to take a very long time before returning. For the next file, it never returns, and the CPU is busy 100%. I've run strace on the program and I saw that no system calls occur when it is stuck in the split function. The memory usage do not grow, either. Sometimes, the split function do not slow down too much but the memory usage grows unbounded, even though the files are not so big. It consumes all the 512 MB of RAM of my system. I don't see any circularity in the program that could cause the input not to be garbage collected. I've tried the program on two computers running Linux (i386) on Slackware 8. I tried perl 5.6.0 and 5.6.1, both produces similar output. The 5.6.1 version was recompiled from the sources, using the default values as the build options. Am I doing something really stupid in the program or is there a bug in Perl? Hopefully you can reproduce the problem on your system. Running the program in /usr/lib/ triggers the problem for me. Thanks a lot, Laurent Birtz
Download bugperl
text/plain 812b
#!/usr/bin/perl -w use strict; $| = 1; main(); sub main { my $file_data; my @array; my $saved_sep; my @file_list; ### Get all file in current working directory. @file_list = <*>; print("The following files will be tried: @file_list\n\n"); foreach my $file (@file_list) { if(! -f $file) { print("Skipping $file: not regular\n"); next; } print("Opening file '$file'...\n"); open(INPUT_FILE, "<$file") || die("Cannot open $file: $!"); ### Slurp file in. $saved_sep = $/; $/ = undef; $file_data = <INPUT_FILE>; $/ = $saved_sep; ### Attempt to split file data. print("Split..\n"); ### On my system it hangs here. @array = split(//, $file_data); print("End split..\n"); close(INPUT_FILE) || die("Cannot close $file: $!"); } }
Date: Mon, 13 May 2002 22:28:01 +0100
From: Dave Mitchell <davem [...] fdgroup.com>
To: Delta <birtl00 [...] dmi.usherb.ca>
Cc: perl5-porters [...] perl.org
Subject: Re: [ID 20020513.013] Perl bug -- split function
Download (untitled) / with headers
text/plain 4.1k
On Mon, May 13, 2002 at 04:47:42PM -0400, Delta wrote: Show quoted text
> Hi, > I got a problem with the 'split' function. > > I've attached a program that open each file of a directory one at a > time, read the entire content of the file in a scalar, then attempt to > split the data into list elements of one character each, using the empty > split pattern (//). > > > The result varies based on the input. For some files (when there are not > many in the directory), it works fine. > > Sometimes, after having read 5-6 files, the split function begins to > take a very long time before returning. For the next file, it never > returns, and the CPU is busy 100%. I've run strace on the program and I > saw that no system calls occur when it is stuck in the split function. > The memory usage do not grow, either. > > Sometimes, the split function do not slow down too much but the memory > usage grows unbounded, even though the files are not so big. It > consumes all the 512 MB of RAM of my system. I don't see any > circularity in the program that could cause the input not to be garbage > collected.
The problem here is that when you split large strings into 1-character strings, you are creating extremely large data structures. This is one reason why it's noticable in /usr/lib - there are many files in there over 1Mb in size. When you split a 1Mb file into charcters, you are creating a an array with 1,000,000 elements, each of which holds a Perl string that happens to be 1 character long. Perl strings are quite big objects (if you think about it, they have the capability to store strings, numbers, references etc). So splitting a 1Mb file can end up using a couple of hundred Mb - especially when you take into account the fact that the array has to be continually extended. So, when you split your first large file, it takes a while, and memory usage grows wildly. Then, when you start to split the next file, Perl has to release those 1 million strings fromt he previous split, which takes ages, depending on your system's malloc() library and the vagarities of Perl. The moral is: don't split 1Mbyte strings into individual characters :-) Note to perl5porters: This behaviour appears in bleedperl too; after splitting s 2.3Mb file, memory usage rose to about 250Mb, and freeing the array took several minutes. (admittedly that was with -DEBUGGING). gdb showed that the time was being taken up calling sv_free N zillion times. So, * for a future Perl, do we have the technology to presize the array in @a = split //, $s ? * Freeing the 1M scalars does take an *awfully* long time - is this Perl's fault or malloc()'s - or is that Life? Dave. Show quoted text
> I've tried the program on two computers running Linux (i386) on > Slackware 8. I tried perl 5.6.0 and 5.6.1, both produces similar > output. The 5.6.1 version was recompiled from the sources, using the > default values as the build options. > > Am I doing something really stupid in the program or is there a bug in Perl? > Hopefully you can reproduce the problem on your system. Running the > program in /usr/lib/ triggers the problem for me. > > Thanks a lot, > > Laurent Birtz > >
Show quoted text
> #!/usr/bin/perl -w > > use strict; > $| = 1; > > main(); > > > sub main > { > my $file_data; > my @array; > my $saved_sep; > my @file_list; > > ### Get all file in current working directory. > @file_list = <*>; > print("The following files will be tried: @file_list\n\n"); > > foreach my $file (@file_list) > { > if(! -f $file) > { > print("Skipping $file: not regular\n"); > next; > } > > print("Opening file '$file'...\n"); > > open(INPUT_FILE, "<$file") > || die("Cannot open $file: $!"); > > ### Slurp file in. > $saved_sep = $/; > $/ = undef; > $file_data = <INPUT_FILE>; > $/ = $saved_sep; > > ### Attempt to split file data. > print("Split..\n"); > > ### On my system it hangs here. > @array = split(//, $file_data); > > print("End split..\n"); > > close(INPUT_FILE) > || die("Cannot close $file: $!"); > } > } > > >
-- "There's something wrong with our bloody ships today, Chatfield." Admiral Beatty at the Battle of Jutland, 31st May 1916.
From: "Green, Paul" <Paul.Green [...] stratus.com>
To: "'Dave Mitchell'" <davem [...] fdgroup.com>, Delta <birtl00 [...] dmi.usherb.ca>
Cc: perl5-porters [...] perl.org
Subject: RE: [ID 20020513.013] Perl bug -- split function
Date: Mon, 13 May 2002 19:12:43 -0400
Download (untitled) / with headers
text/plain 1.7k
Dave Mitchell [mailto:davem@fdgroup.com] wonders, based on an inquiry from Delta, Show quoted text
> * Freeing the 1M scalars does take an *awfully* long time - > is this Perl's fault or malloc()'s - or is that Life? > > Dave.
I've worked with a number of different operating-system-supplied storage allocators over the years. They all make the basic assumption that the caller is allocating a "reasonable" amount of storage and holding onto it for a "reasonable" length of time. When you have algorithms that purposefully violate either of these "reasonable" preconditions, you can beat the performance of said allocator by writing your own. But then, you are off in the exciting world of dealing with all of the unreasonable behavior requested by the universe of callers. The allocator we use on VOS allocates storage that is at least 64-byte aligned. We allocate in units of 16 bytes. We have a 16-byte overhead for each block. We have to mask and unmask interrupts on every allocation to protect against program interrupts. We have to be careful in case the heap is damaged. Allocation and free performance is a goal, but is outweighed by correctness, reliability, nonfragmentation, and alignment goals. (By aligning the data properly we optimize the performance of our clients). The short answer is that 1M of anything is expensive. The long answer is that allocating storage is a nontrivial operation. If you want to store a million bytes efficiently, allocate a million-byte string and use substr. Any good algorithms course and / or textbook goes into great depth on these subjects and should be read and studied by any software engineer. This is just the tip of the icebert. Go get a good book and read it, or find a local college and take their algorithms course. HTH PG
From: "Green, Paul" <Paul.Green [...] stratus.com>
To: "Green, Paul" <Paul.Green [...] stratus.com>, "'Dave Mitchell'" <davem [...] fdgroup.com>, Delta <birtl00 [...] dmi.usherb.ca>
Cc: perl5-porters [...] perl.org
Subject: RE: [ID 20020513.013] Perl bug -- split function
Date: Mon, 13 May 2002 19:15:44 -0400
Download (untitled) / with headers
text/plain 2.1k
s/icebert/iceberg/ With apologies to Bert. PG Show quoted text
> -----Original Message----- > From: Green, Paul [mailto:Paul.Green@stratus.com] > Sent: Monday, May 13, 2002 7:13 PM > To: 'Dave Mitchell'; Delta > Cc: perl5-porters@perl.org > Subject: RE: [ID 20020513.013] Perl bug -- split function > > > Dave Mitchell [mailto:davem@fdgroup.com] wonders, based on an > inquiry from > Delta,
> > * Freeing the 1M scalars does take an *awfully* long time - > > is this Perl's fault or malloc()'s - or is that Life? > > > > Dave.
> > I've worked with a number of different > operating-system-supplied storage > allocators over the years. They all make the basic assumption that the > caller is allocating a "reasonable" amount of storage and > holding onto it > for a "reasonable" length of time. When you have algorithms that > purposefully violate either of these "reasonable" > preconditions, you can > beat the performance of said allocator by writing your own. > But then, you > are off in the exciting world of dealing with all of the unreasonable > behavior requested by the universe of callers. > > The allocator we use on VOS allocates storage that is at least 64-byte > aligned. We allocate in units of 16 bytes. We have a 16-byte > overhead for > each block. We have to mask and unmask interrupts on every > allocation to > protect against program interrupts. We have to be careful in > case the heap > is damaged. Allocation and free performance is a goal, but is > outweighed by > correctness, reliability, nonfragmentation, and alignment goals. (By > aligning the data properly we optimize the performance of our > clients). > > The short answer is that 1M of anything is expensive. The > long answer is > that allocating storage is a nontrivial operation. If you > want to store a > million bytes efficiently, allocate a million-byte string and > use substr. > > Any good algorithms course and / or textbook goes into great > depth on these > subjects and should be read and studied by any software > engineer. This is > just the tip of the icebert. Go get a good book and read it, > or find a > local college and take their algorithms course. > > HTH > PG >
Date: Tue, 14 May 2002 11:28:25 +0100
From: Dave Mitchell <davem [...] fdgroup.com>
To: "Green, Paul" <Paul.Green [...] stratus.com>
Cc: perl5-porters [...] perl.org
Subject: Re: [ID 20020513.013] Perl bug -- split function
Download (untitled) / with headers
text/plain 801b
On Mon, May 13, 2002 at 07:12:43PM -0400, Green, Paul wrote: Show quoted text
> Dave Mitchell [mailto:davem@fdgroup.com] wonders, based on an inquiry from > Delta,
> > * Freeing the 1M scalars does take an *awfully* long time - > > is this Perl's fault or malloc()'s - or is that Life?
[snip] Show quoted text
> The short answer is that 1M of anything is expensive.
I guess what I meant to say was: I would expect freeing 1M scalars to take a long time, but it took even longer than I expected (about 100,000 CPU cycles per sv_free() for a simple PV), so note to self: when you have a free minute, check that Perl isn't doing anything silly here. It probably isn't, but it may be worth checking. Dave. -- In England there is a special word which means the last sunshine of the summer. That word is "spring".
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1017b
On Mon May 13 20:31:02 2002, RT_System wrote: Show quoted text
> On Mon, May 13, 2002 at 07:12:43PM -0400, Green, Paul wrote:
> > Dave Mitchell [mailto:davem@fdgroup.com] wonders, based on an
inquiry from Show quoted text
> > Delta,
> > > * Freeing the 1M scalars does take an *awfully* long time - > > > is this Perl's fault or malloc()'s - or is that Life?
> [snip]
> > The short answer is that 1M of anything is expensive.
> > I guess what I meant to say was: > > I would expect freeing 1M scalars to take a long time, but it took > even longer than I expected (about 100,000 CPU cycles per sv_free() > for a simple PV), so note to self: when you have a free minute, check > that Perl isn't doing anything silly here. It probably isn't, but it > may be worth checking. >
Reviewing this ticket today, my impression is that it falls into the category of "Original poster was doing something inadvisable." So, is Perl "doing anything silly here"? If not, do we need to keep this ticket open? Thank you very much. Jim Keenan
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.3k
On Mon May 13 20:31:02 2002, RT_System wrote: Show quoted text
> On Mon, May 13, 2002 at 07:12:43PM -0400, Green, Paul wrote:
> > Dave Mitchell [mailto:davem@fdgroup.com] wonders, based on an
inquiry from Show quoted text
> > Delta,
> > > * Freeing the 1M scalars does take an *awfully* long time - > > > is this Perl's fault or malloc()'s - or is that Life?
> [snip]
> > The short answer is that 1M of anything is expensive.
> > I guess what I meant to say was: > > I would expect freeing 1M scalars to take a long time, but it took > even longer than I expected (about 100,000 CPU cycles per sv_free() > for a simple PV), so note to self: when you have a free minute, check > that Perl isn't doing anything silly here. It probably isn't, but it > may be worth checking. > > Dave. >
It takes 0.1 seconds for me. 32-bit Windows threaded build from ActivePerl. That doesn't seem unreasonable. What I find interesting is that C<< split // >> is O(N^2), though. 1,000,000 split and alloc: 1.4 SV dealloc: 0.1 5,000,000 split and alloc: 29.7 SV dealloc: 0.7 10,000,000 split and alloc: 118.7 SV dealloc: 1.3 use strict; use warnings; use Time::HiRes qw( time ); my $x = "x" x 10_000_000; my $time1 = time; my @a = split //, $x; my $time2 = time; @a = (); my $time3 = time; printf("split and alloc: %6.1f\n", $time2-$time1); printf("SV dealloc: %6.1f\n", $time3-$time2);
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.6k
On Sat Apr 21 14:58:41 2012, jkeenan wrote: Show quoted text
> Reviewing this ticket today, my impression is that it falls into the > category of "Original poster was doing something inadvisable." > > So, is Perl "doing anything silly here"? If not, do we need to keep > this ticket open?
The only way I can think of fixing this would be some kind of scheme where PVs upto sizeof(void *) or sizeof(IV) get stored in the sv body or directly in sv head union. Doing a grow above sizeof(void *) or sizeof(IV) bytes will switch it to a real malloc block. The other fix is use a bucket allocator similar to *I think* SV heads and/or SV bodys for PVs under X bytes. The other bug is that the split is quadratic according to the above. Thankfully the dealloc is linear according to the above. I looked at this in C, I think (by eye, not profiler) most of the time is being spent in while (--limit) { if (gimme_scalar) { iters++; } else { dstr = newSVpvn(s, 1); if (make_mortal) sv_2mortal(dstr); PUSHs(dstr); } s++; if (s >= strend) break; } in pp_split. It would mean the performance of this is basically Perl's allocators (sv body/head arenas) AND the c lib allocator. It seems linear superficially, but I'm not sure about Perl's sv allocators. Also at 100s of MBs of ram which this script takes even though I have 3 GB of ram on 32 bits, I see alot of "system" cpu time on WinXP something like 30% of my dual core machine (perl is 50%, single thread, max possible). Im not sure what "system" time is in Windows at the moment and I dont have time to google it right now.
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.7k
I thought a bit more. I dont have a Perl build with a C profiler available, but I thought of NYTProf. But NYTProf doesn't profile all opcodes, only select opcodes. The quadratic time, it might not be pp_split to blame. It can be pp_padav or pp_aasign. NYTProf doesn't provide opcode timings for all opcodes AFAIK. Someone correct me if I am wrong. Maybe pp_split should directly write into AVs targ style. But targ is a Scalar not an Array. I'll throw it out, maybe that can change. Made with Perl 5.12 and B Concise. # 7: my $time1 = time; 8 <;> nextstate(main 408 n13.pl:7) v:*,&,{,$ 9 <0> pushmark s a <#> gv[*time] s b <1> entersub[t5] sKS/TARG,3 c <0> padsv[$time1:408,412] sRM*/LVINTRO d <2> sassign vKS/2 # 8: my @a = split //, $x; e <;> nextstate(main 409 n13.pl:8) v:*,&,{,$ f <0> pushmark s g </> pushre(/""/) s/64 h <0> padsv[$x:407,412] s i <$> const[IV 0] s j <@> split[t7] lK k <0> pushmark s l <0> padav[@a:409,412] lRM*/LVINTRO m <2> aassign[t8] vKS # 9: my $time2 = time; n <;> nextstate(main 410 n13.pl:9) v:*,&,{,$ o <0> pushmark s p <#> gv[*time] s q <1> entersub[t11] sKS/TARG,3 r <0> padsv[$time2:410,412] sRM*/LVINTRO s <2> sassign vKS/2 # 10: @a = (); t <;> nextstate(main 411 n13.pl:10) v:*,&,{,$ u <0> pushmark s v <0> pushmark s w <0> padav[@a:409,412] lRM* x <2> aassign[t12] vKS # 11: my $time3 = time; y <;> nextstate(main 411 n13.pl:11) v:*,&,{,$ z <0> pushmark s 10 <#> gv[*time] s 11 <1> entersub[t15] sKS/TARG,3 12 <0> padsv[$time3:411,412] sRM*/LVINTRO 13 <2> sassign vKS/2 # 13: printf("split and alloc: %6.1f\n", $time2-$time1); 14 <;> nextstate(main 412 n13.pl:13) v:*,&,{,$ 15 <0> pushmark s 16 <$> const[PV "split and alloc: %6.1f\n"] s 17 <0> padsv[$time2:410,412] s 18 <0> padsv[$time1:408,412] s 19 <2> subtract[t17] sK/2 1a <@> prtf vK
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 2.1k
Hacked NYTProf to profile opcodes aassign padav pushmark split. Long story short. pp_split or a call fron pp_split is the quadratic problem. 6 1 0s my $x = "x" x 1000000; 7 1 0s 2 0s my $time1 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 8 1 5.08s 5 4.53s my @a = split //, $x; # spent 3.83s making 1 call to CORE::split # spent 703ms making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call 9 1 0s 2 0s my $time2 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 10 1 531ms 4 531ms @a = (); # spent 531ms making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call 6 1 0s my $x = "x" x 2000000; 7 1 0s 2 0s my $time1 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 8 1 15.7s 5 14.6s my @a = split //, $x; # spent 13.3s making 1 call to CORE::split # spent 1.38s making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call 9 1 0s 2 0s my $time2 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 10 1 1.06s 4 1.06s @a = (); # spent 1.06s making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call 6 1 15.6ms my $x = "x" x 4000000; 7 1 0s 2 0s my $time1 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 8 1 56.5s 5 54.4s my @a = split //, $x; # spent 51.6s making 1 call to CORE::split # spent 2.78s making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call 9 1 0s 2 0s my $time2 = time; # spent 0s making 1 call to CORE::pushmark # spent 0s making 1 call to Time::HiRes::time 10 1 2.16s 4 2.16s @a = (); # spent 2.16s making 1 call to CORE::aassign # spent 0s making 1 call to CORE::padav # spent 0s making 2 calls to CORE::pushmark, avg 0s/call
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.9k
I made this XS func. void SVSpeed() PPCODE: LARGE_INTEGER my_beg; LARGE_INTEGER my_end; LARGE_INTEGER my_freq; SV * sv; int i; QueryPerformanceFrequency(&my_freq); for(i=0; i < 4000001; i++){ if(i % 50000 == 0) QueryPerformanceCounter(&my_beg); sv = newSVpvn("x", 1); sv_2mortal(sv); if(i % 50000 == 0){ QueryPerformanceCounter(&my_end); printf("time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); } } called it as use Blah; Blah::SVSpeed(); got C:\Perl>perl svspeed.pl time=0.000003 time=0.000002 time=0.000003 time=0.000003 time=0.000005 time=0.000002 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000002 time=0.000003 time=0.000003 time=0.000002 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.009444 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000009 time=0.000003 time=0.000003 time=0.000003 time=0.000002 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000003 time=0.000002 time=0.000003 time=0.000003 C:\Perl> So its not those 2 calls, on a PER call basis. I noticed there was 1 spike. Plus I'm not measuring the time for the first quarter of SV creations vs the last quarter. I'll try cut up the sv generations and see if later ones take longer as a whole than earlier ones.
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 1.3k
rewrote as void SVSpeed() PPCODE: LARGE_INTEGER my_beg; LARGE_INTEGER my_end; LARGE_INTEGER my_freq; SV * sv; int i; QueryPerformanceFrequency(&my_freq); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv = newSVpvn("x", 1); sv_2mortal(sv); } QueryPerformanceCounter(&my_end); printf("time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv = newSVpvn("x", 1); sv_2mortal(sv); } QueryPerformanceCounter(&my_end); printf("time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv = newSVpvn("x", 1); sv_2mortal(sv); } QueryPerformanceCounter(&my_end); printf("time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv = newSVpvn("x", 1); sv_2mortal(sv); } QueryPerformanceCounter(&my_end); printf("time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); result C:\Perl>perl svspeed.pl time=3.949501 time=10.233058 time=15.953743 time=22.295258 C:\Perl> We have the culprit. I am done.
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 2.3k
Ok, actually problem is the mortal system. C:\Perl>perl svspeed.pl newsv time=0.587146 mortal time=2.857621 newsv time=0.579447 mortal time=9.141501 newsv time=0.582962 mortal time=15.362363 newsv time=0.585780 mortal time=22.163787 C:\Perl> void SVSpeed() PPCODE: LARGE_INTEGER my_beg; LARGE_INTEGER my_end; LARGE_INTEGER my_freq; SV * sv; int i; SV ** arr = malloc(sizeof(SV *) * 1000000); QueryPerformanceFrequency(&my_freq); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ arr[i] = newSVpvn("x", 1); } QueryPerformanceCounter(&my_end); printf("newsv time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv_2mortal(arr[i]); } QueryPerformanceCounter(&my_end); printf("mortal time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ arr[i] = newSVpvn("x", 1); } QueryPerformanceCounter(&my_end); printf("newsv time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv_2mortal(arr[i]); } QueryPerformanceCounter(&my_end); printf("mortal time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ arr[i] = newSVpvn("x", 1); } QueryPerformanceCounter(&my_end); printf("newsv time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv_2mortal(arr[i]); } QueryPerformanceCounter(&my_end); printf("mortal time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ arr[i] = newSVpvn("x", 1); } QueryPerformanceCounter(&my_end); printf("newsv time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); QueryPerformanceCounter(&my_beg); for(i=0; i < 1000000; i++){ sv_2mortal(arr[i]); } QueryPerformanceCounter(&my_end); printf("mortal time=%f\n", ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart);
CC: perl5-porters [...] perl.org
Subject: Re: [perl #9319] Perl bug -- split function
Date: Sun, 22 Apr 2012 12:25:42 +0100
To: bulk 88 via RT <perlbug-followup [...] perl.org>
From: Dave Mitchell <davem [...] iabyn.com>
Download (untitled) / with headers
text/plain 4.2k
On Sun, Apr 22, 2012 at 12:53:06AM -0700, bulk 88 via RT wrote: Show quoted text
> Ok, actually problem is the mortal system. > > > > C:\Perl>perl svspeed.pl > newsv time=0.587146 > mortal time=2.857621 > newsv time=0.579447 > mortal time=9.141501 > newsv time=0.582962 > mortal time=15.362363 > newsv time=0.585780 > mortal time=22.163787 > > C:\Perl> > > > void > SVSpeed() > PPCODE: > LARGE_INTEGER my_beg; > LARGE_INTEGER my_end; > LARGE_INTEGER my_freq; > SV * sv; > int i; > SV ** arr = malloc(sizeof(SV *) * 1000000); > QueryPerformanceFrequency(&my_freq); > > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > arr[i] = newSVpvn("x", 1); > } > QueryPerformanceCounter(&my_end); > printf("newsv time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > sv_2mortal(arr[i]); > } > QueryPerformanceCounter(&my_end); > printf("mortal time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > arr[i] = newSVpvn("x", 1); > } > QueryPerformanceCounter(&my_end); > printf("newsv time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > sv_2mortal(arr[i]); > } > QueryPerformanceCounter(&my_end); > printf("mortal time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > arr[i] = newSVpvn("x", 1); > } > QueryPerformanceCounter(&my_end); > printf("newsv time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > sv_2mortal(arr[i]); > } > QueryPerformanceCounter(&my_end); > printf("mortal time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > arr[i] = newSVpvn("x", 1); > } > QueryPerformanceCounter(&my_end); > printf("newsv time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); > QueryPerformanceCounter(&my_beg); > for(i=0; i < 1000000; i++){ > sv_2mortal(arr[i]); > } > QueryPerformanceCounter(&my_end); > printf("mortal time=%f\n", > ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart);
I don't see similar slowdowns on linux with perl 5.15.9; I presume it must be something to do with the windows malloc not liking repeated realloc()s of the tmps stack: #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include <sys/time.h> MODULE = Mytest PACKAGE = Mytest void hello() PPCODE: struct timeval t1, t2; SV * sv; int i; int j; SV ** arr = malloc(sizeof(SV *) * 1000000); for (j=1; j<=5; j++) { gettimeofday(&t1, NULL); for(i=0; i < 1000000; i++){ arr[i] = newSVpvn("x", 1); } gettimeofday(&t2, NULL); t2.tv_sec -= t1.tv_sec; t2.tv_usec -= t1.tv_usec; if (t2.tv_usec < 0) { t2.tv_sec--; t2.tv_usec += 1000000; } printf("newsv %d time=%d.%06ds\n", j, t2.tv_sec, t2.tv_usec); gettimeofday(&t1, NULL); for(i=0; i < 1000000; i++){ sv_2mortal(arr[i]); } gettimeofday(&t2, NULL); t2.tv_sec -= t1.tv_sec; t2.tv_usec -= t1.tv_usec; if (t2.tv_usec < 0) { t2.tv_sec--; t2.tv_usec += 1000000; } printf("mortal %d time=%d.%06ds\n", j, t2.tv_sec, t2.tv_usec); printf("\n"); } [davem@pigeon Mytest]$ perl5159o -Mblib /tmp/p newsv 1 time=0.194811s mortal 1 time=0.033377s newsv 2 time=0.185385s mortal 2 time=0.033189s newsv 3 time=0.184901s mortal 3 time=0.031508s newsv 4 time=0.185011s mortal 4 time=0.033563s newsv 5 time=0.184997s mortal 5 time=0.032119s Nor can I see any quadratic slowdown with doing @a = split //, $ling_string, so again, perhaps its very sensitive to the malloc library? -- The Enterprise successfully ferries an alien VIP from one place to another without serious incident. -- Things That Never Happen in "Star Trek" #7
CC: bulk 88 via RT <perlbug-followup [...] perl.org>, perl5-porters [...] perl.org
Subject: Re: [perl #9319] Perl bug -- split function
Date: Sun, 22 Apr 2012 16:04:12 +0200
To: Dave Mitchell <davem [...] iabyn.com>
From: demerphq <demerphq [...] gmail.com>
Download (untitled) / with headers
text/plain 3.3k
On 22 April 2012 13:25, Dave Mitchell <davem@iabyn.com> wrote: Show quoted text
> On Sun, Apr 22, 2012 at 12:53:06AM -0700, bulk 88 via RT wrote:
>> Ok, actually problem is the mortal system. >> >> >> >> C:\Perl>perl svspeed.pl >> newsv time=0.587146 >> mortal time=2.857621 >> newsv time=0.579447 >> mortal time=9.141501 >> newsv time=0.582962 >> mortal time=15.362363 >> newsv time=0.585780 >> mortal time=22.163787 >> >> C:\Perl> >> >> >> void >> SVSpeed() >> PPCODE: >>     LARGE_INTEGER my_beg; >>     LARGE_INTEGER my_end; >>     LARGE_INTEGER my_freq; >>     SV * sv; >>     int i; >>     SV ** arr = malloc(sizeof(SV *) * 1000000); >>     QueryPerformanceFrequency(&my_freq); >> >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         arr[i] = newSVpvn("x", 1); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("newsv time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         sv_2mortal(arr[i]); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("mortal time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         arr[i] = newSVpvn("x", 1); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("newsv time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         sv_2mortal(arr[i]); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("mortal time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         arr[i] = newSVpvn("x", 1); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("newsv time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         sv_2mortal(arr[i]); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("mortal time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         arr[i] = newSVpvn("x", 1); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("newsv time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart); >>     QueryPerformanceCounter(&my_beg); >>     for(i=0; i < 1000000; i++){ >>         sv_2mortal(arr[i]); >>     } >>     QueryPerformanceCounter(&my_end); >>     printf("mortal time=%f\n", >> ((double)(my_end.QuadPart-my_beg.QuadPart))/(double)my_freq.QuadPart);
> > I don't see similar slowdowns on linux with perl 5.15.9; I presume it must > be something to do with the windows malloc not liking repeated realloc()s > of the tmps stack:
This is a known issue, windows realloc did/does not extend segments. It always copies. IIRC we (nicholas) did a patch to SvGROW to ameliorate this. Maybe growing the stack by 10% each time would reduce it. Yves -- perl -Mre=debug -e "/just|another|perl|hacker/"
CC: bulk 88 via RT <perlbug-followup [...] perl.org>, perl5-porters [...] perl.org
Subject: Re: [perl #9319] Perl bug -- split function
Date: Mon, 23 Apr 2012 10:08:18 +0100
To: demerphq <demerphq [...] gmail.com>
From: Dave Mitchell <davem [...] iabyn.com>
Download (untitled) / with headers
text/plain 539b
On Sun, Apr 22, 2012 at 04:04:12PM +0200, demerphq wrote: Show quoted text
> This is a known issue, windows realloc did/does not extend segments. > It always copies. IIRC we (nicholas) did a patch to SvGROW to > ameliorate this. Maybe growing the stack by 10% each time would reduce > it.
Since 5.005_03, the tmps stack has been grown in chunks of 128 up to 512, then in chunks of 512 after that. -- The Enterprise successfully ferries an alien VIP from one place to another without serious incident. -- Things That Never Happen in "Star Trek" #7
CC: demerphq <demerphq [...] gmail.com>, bulk 88 via RT <perlbug-followup [...] perl.org>, perl5-porters [...] perl.org
Subject: Re: [perl #9319] Perl bug -- split function
Date: Mon, 23 Apr 2012 16:11:27 +0100
To: Dave Mitchell <davem [...] iabyn.com>
From: Nicholas Clark <nick [...] ccl4.org>
Download (untitled) / with headers
text/plain 1.4k
["bulk 88", thanks for diagnosing that the problem on Win32 is with the realloc() when creating new mortals. This is useful knowledge.] On Mon, Apr 23, 2012 at 10:08:18AM +0100, Dave Mitchell wrote: Show quoted text
> On Sun, Apr 22, 2012 at 04:04:12PM +0200, demerphq wrote:
> > This is a known issue, windows realloc did/does not extend segments. > > It always copies. IIRC we (nicholas) did a patch to SvGROW to > > ameliorate this. Maybe growing the stack by 10% each time would reduce > > it.
This is the underlying Win32 runtime realloc that has this wonderful "feature" of always copying? Or something layered on top of it? Show quoted text
> Since 5.005_03, the tmps stack has been grown in chunks of 128 up to 512, > then in chunks of 512 after that.
Given that the perl "malloc" for ithreads & fork emulation already ends up returning pointers "incompatible" with the system malloc thanks to the tracking header, would it be sensible to investigate defaulting Win32 to using perl's malloc.c? (With -DPERL_SBRK_VIA_MALLOC so that the win32 system malloc supplies the "raw" memory that malloc.c partitions) It seems crazy to have to keep putting in place work arounds for what is a solved problem. Nicholas Clark PS I looked to see whether it would be viable to replace the contiguous mortal stack into chunks. It seems that a little too much of the core assumes that it is a stack to make this easy. And dammit, why are we pandering to crap code? This is makework.
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 4.6k
On Mon Apr 23 08:12:05 2012, nicholas wrote: Show quoted text
> This is the underlying Win32 runtime realloc that has this wonderful > "feature" of always copying? Or something layered on top of it? >
> > Since 5.005_03, the tmps stack has been grown in chunks of 128 up to
512, Show quoted text
> > then in chunks of 512 after that.
> > Given that the perl "malloc" for ithreads & fork emulation already ends > up returning pointers "incompatible" with the system malloc thanks to the > tracking header, would it be sensible to investigate defaulting Win32 to > using perl's malloc.c? (With -DPERL_SBRK_VIA_MALLOC so that the win32
system Show quoted text
> malloc supplies the "raw" memory that malloc.c partitions) > > It seems crazy to have to keep putting in place work arounds for what is a > solved problem. > > Nicholas Clark > > PS I looked to see whether it would be viable to replace the contiguous > mortal stack into chunks. It seems that a little too much of the core > assumes that it is a stack to make this easy. And dammit, why are we > pandering to crap code? This is makework. >
I suggest a percentage growth for the mortal stack realloc rather than 512 blocks, maybe /4 or >>2 (same thing). Or increase it to 4096 bytes /32bit page size, which at that point will force a kernel call to the paging system anyways. Is there a macro that is the local page size, cross platform, already somewhere in Perl? I made a couple examples of the windows alloc system. I compared Perl's malloc, to Heap malloc, to C lib malloc. I ran each in its own process, so they weren't competing for memory. The C lib is msvcr71.dll (vs 2003). -V is below. I have an issue with Perl using the C lib's malloc system which is layered over Win32's malloc (Heap*) system. Its wasteful indirection to go through the c lib on windows. In the Dos Windows days the C lib actually implemented its own memory allocator, see http://msdn.microsoft.com/en-us/library/a6x53890%28v=vs.100%29.aspx but its not used on NT Windows by default (do we make it the default on Win Perl :-p? its still available in VS 2010) but without CRT SBH its nothing but a wrapper for Heap*. I'm not sure if the CRT adds its own header on top of Heap*. Above the SBH threshold, everything goes to Heap*. Summary of my perl5 (revision 5 version 12 subversion 2) configuration: Platform: osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cl', ccflags ='-nologo -GF -W3 -Od -MD -Zi -DDEBUGGING -DWIN32 -D_CONSOL E -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DU SE_PERLIO', optimize='-Od -MD -Zi -DDEBUGGING', cppflags='-DWIN32' ccversion='13.10.3077', gccversion='', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64', lseeksi ze=8 alignbytes=8, prototype=define Linker and Libraries: ld='link', ldflags ='-nologo -nodefaultlib -debug -libpath:"c:\perl512\lib\ CORE" -machine:x86' libpth="c:\Program Files\Microsoft Visual Studio .NET 2003\VC7\lib" libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32 .lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_ 32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcr t.lib perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comd lg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib m svcrt.lib libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl512.lib gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -libpath:"c:\p erl512\lib\CORE" -machine:x86' Characteristics of this binary (from libperl): Compile-time options: DEBUGGING MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL PL_OP_SLAB_ALLOC USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF Built under MSWin32 Compiled at Mar 23 2011 08:10:43 %ENV: PERL_JSON_BACKEND="JSON::XS" PERL_YAML_BACKEND="YAML" @INC: C:/perl512/site/lib C:/perl512/lib .
Download plalloc.txt
text/plain 13.5k
ptr changed at 5, ptr=00822ED4 ptr changed at 13, ptr=0083A454 ptr changed at 21, ptr=0083A36C ptr changed at 29, ptr=0082BB2C ptr changed at 37, ptr=0083B0D4 ptr changed at 45, ptr=008337B4 ptr changed at 53, ptr=00904E84 ptr changed at 61, ptr=00905D3C ptr changed at 69, ptr=008EF69C ptr changed at 77, ptr=008E76DC ptr changed at 85, ptr=0083A52C ptr changed at 133, ptr=00928D7C ptr changed at 141, ptr=0091822C ptr changed at 2181, ptr=0094F024 ptr changed at 2693, ptr=0094956C ptr changed at 25917, ptr=0093B304 ptr changed at 25973, ptr=00962DC4 ptr changed at 520157, ptr=00B2003C ptr changed at 524221, ptr=00BA003C ptr changed at 528317, ptr=00C3003C ptr changed at 532413, ptr=00B2003C ptr changed at 536509, ptr=00BB003C ptr changed at 540605, ptr=00B2003C ptr changed at 544701, ptr=00BB003C ptr changed at 548797, ptr=00B2003C ptr changed at 552893, ptr=00BB003C ptr changed at 556989, ptr=00B2003C ptr changed at 561085, ptr=00BB003C ptr changed at 565181, ptr=00B2003C ptr changed at 569277, ptr=00BB003C ptr changed at 573373, ptr=00B2003C ptr changed at 577469, ptr=00BB003C ptr changed at 581565, ptr=00B2003C ptr changed at 585661, ptr=00BB003C ptr changed at 589757, ptr=00C4003C ptr changed at 593853, ptr=00B2003C ptr changed at 597949, ptr=00BC003C ptr changed at 602045, ptr=00B2003C ptr changed at 606141, ptr=00BC003C ptr changed at 610237, ptr=00B2003C ptr changed at 614333, ptr=00BC003C ptr changed at 618429, ptr=00B2003C ptr changed at 622525, ptr=00BC003C ptr changed at 626621, ptr=00B2003C ptr changed at 630717, ptr=00BC003C ptr changed at 634813, ptr=00B2003C ptr changed at 638909, ptr=00BC003C ptr changed at 643005, ptr=00B2003C ptr changed at 647101, ptr=00BC003C ptr changed at 651197, ptr=00B2003C ptr changed at 655293, ptr=00BC003C ptr changed at 659389, ptr=00C7003C ptr changed at 663485, ptr=00B2003C ptr changed at 667581, ptr=00BD003C ptr changed at 671677, ptr=00B2003C ptr changed at 675773, ptr=00BD003C ptr changed at 679869, ptr=00B2003C ptr changed at 683965, ptr=00BD003C ptr changed at 688061, ptr=00B2003C ptr changed at 692157, ptr=00BD003C ptr changed at 696253, ptr=00B2003C ptr changed at 700349, ptr=00BD003C ptr changed at 704445, ptr=00B2003C ptr changed at 708541, ptr=00BD003C ptr changed at 712637, ptr=00B2003C ptr changed at 716733, ptr=00BD003C ptr changed at 720829, ptr=00C8003C ptr changed at 724925, ptr=00B2003C ptr changed at 729021, ptr=00BE003C ptr changed at 733117, ptr=00B2003C ptr changed at 737213, ptr=00BE003C ptr changed at 741309, ptr=00B2003C ptr changed at 745405, ptr=00BE003C ptr changed at 749501, ptr=00B2003C ptr changed at 753597, ptr=00BE003C ptr changed at 757693, ptr=00B2003C ptr changed at 761789, ptr=00BE003C ptr changed at 765885, ptr=00B2003C ptr changed at 769981, ptr=00BE003C ptr changed at 774077, ptr=00B2003C ptr changed at 778173, ptr=00BE003C ptr changed at 782269, ptr=00B2003C ptr changed at 786365, ptr=00BE003C ptr changed at 790461, ptr=00CB003C ptr changed at 794557, ptr=00B2003C ptr changed at 798653, ptr=00BF003C ptr changed at 802749, ptr=00B2003C ptr changed at 806845, ptr=00BF003C ptr changed at 810941, ptr=00B2003C ptr changed at 815037, ptr=00BF003C ptr changed at 819133, ptr=00B2003C ptr changed at 823229, ptr=00BF003C ptr changed at 827325, ptr=00B2003C ptr changed at 831421, ptr=00BF003C ptr changed at 835517, ptr=00B2003C ptr changed at 839613, ptr=00BF003C ptr changed at 843709, ptr=00B2003C ptr changed at 847805, ptr=00BF003C ptr changed at 851901, ptr=00CC003C ptr changed at 855997, ptr=00B2003C ptr changed at 860093, ptr=00C0003C ptr changed at 864189, ptr=00B2003C ptr changed at 868285, ptr=00C0003C ptr changed at 872381, ptr=00B2003C ptr changed at 876477, ptr=00C0003C ptr changed at 880573, ptr=00B2003C ptr changed at 884669, ptr=00C0003C ptr changed at 888765, ptr=00B2003C ptr changed at 892861, ptr=00C0003C ptr changed at 896957, ptr=00B2003C ptr changed at 901053, ptr=00C0003C ptr changed at 905149, ptr=00B2003C ptr changed at 909245, ptr=00C0003C ptr changed at 913341, ptr=00B2003C ptr changed at 917437, ptr=00C0003C ptr changed at 921533, ptr=00CF003C ptr changed at 925629, ptr=00B2003C ptr changed at 929725, ptr=00C1003C ptr changed at 933821, ptr=00B2003C ptr changed at 937917, ptr=00C1003C ptr changed at 942013, ptr=00B2003C ptr changed at 946109, ptr=00C1003C ptr changed at 950205, ptr=00B2003C ptr changed at 954301, ptr=00C1003C ptr changed at 958397, ptr=00B2003C ptr changed at 962493, ptr=00C1003C ptr changed at 966589, ptr=00B2003C ptr changed at 970685, ptr=00C1003C ptr changed at 974781, ptr=00B2003C ptr changed at 978877, ptr=00C1003C ptr changed at 982973, ptr=00D0003C ptr changed at 987069, ptr=00B2003C ptr changed at 991165, ptr=00C2003C ptr changed at 995261, ptr=00B2003C ptr changed at 999357, ptr=00C2003C ptr changed at 1003453, ptr=00B2003C ptr changed at 1007549, ptr=00C2003C ptr changed at 1011645, ptr=00B2003C ptr changed at 1015741, ptr=00C2003C ptr changed at 1019837, ptr=00B2003C ptr changed at 1023933, ptr=00C2003C ptr changed at 1028029, ptr=00B2003C ptr changed at 1032125, ptr=00C2003C ptr changed at 1036221, ptr=00B2003C ptr changed at 1040317, ptr=00C2003C ptr changed at 1044413, ptr=00B2003C ptr changed at 1048509, ptr=00C2003C ptr changed at 1052605, ptr=00D3003C ptr changed at 1056701, ptr=00B2003C ptr changed at 1060797, ptr=00C3003C ptr changed at 1064893, ptr=00B2003C ptr changed at 1068989, ptr=00C3003C ptr changed at 1073085, ptr=00B2003C ptr changed at 1077181, ptr=00C3003C ptr changed at 1081277, ptr=00B2003C ptr changed at 1085373, ptr=00C3003C ptr changed at 1089469, ptr=00B2003C ptr changed at 1093565, ptr=00C3003C ptr changed at 1097661, ptr=00B2003C ptr changed at 1101757, ptr=00C3003C ptr changed at 1105853, ptr=00B2003C ptr changed at 1109949, ptr=00C3003C ptr changed at 1114045, ptr=00D4003C ptr changed at 1118141, ptr=00B2003C ptr changed at 1122237, ptr=00C4003C ptr changed at 1126333, ptr=00B2003C ptr changed at 1130429, ptr=00C4003C ptr changed at 1134525, ptr=00B2003C ptr changed at 1138621, ptr=00C4003C ptr changed at 1142717, ptr=00B2003C ptr changed at 1146813, ptr=00C4003C ptr changed at 1150909, ptr=00B2003C ptr changed at 1155005, ptr=00C4003C ptr changed at 1159101, ptr=00B2003C ptr changed at 1163197, ptr=00C4003C ptr changed at 1167293, ptr=00B2003C ptr changed at 1171389, ptr=00C4003C ptr changed at 1175485, ptr=00B2003C ptr changed at 1179581, ptr=00C4003C ptr changed at 1183677, ptr=00D7003C ptr changed at 1187773, ptr=00B2003C ptr changed at 1191869, ptr=00C5003C ptr changed at 1195965, ptr=00B2003C ptr changed at 1200061, ptr=00C5003C ptr changed at 1204157, ptr=00B2003C ptr changed at 1208253, ptr=00C5003C ptr changed at 1212349, ptr=00B2003C ptr changed at 1216445, ptr=00C5003C ptr changed at 1220541, ptr=00B2003C ptr changed at 1224637, ptr=00C5003C ptr changed at 1228733, ptr=00B2003C ptr changed at 1232829, ptr=00C5003C ptr changed at 1236925, ptr=00B2003C ptr changed at 1241021, ptr=00C5003C ptr changed at 1245117, ptr=00D8003C ptr changed at 1249213, ptr=00B2003C ptr changed at 1253309, ptr=00C6003C ptr changed at 1257405, ptr=00B2003C ptr changed at 1261501, ptr=00C6003C ptr changed at 1265597, ptr=00B2003C ptr changed at 1269693, ptr=00C6003C ptr changed at 1273789, ptr=00B2003C ptr changed at 1277885, ptr=00C6003C ptr changed at 1281981, ptr=00B2003C ptr changed at 1286077, ptr=00C6003C ptr changed at 1290173, ptr=00B2003C ptr changed at 1294269, ptr=00C6003C ptr changed at 1298365, ptr=00B2003C ptr changed at 1302461, ptr=00C6003C ptr changed at 1306557, ptr=00B2003C ptr changed at 1310653, ptr=00C6003C ptr changed at 1314749, ptr=00DB003C ptr changed at 1318845, ptr=00B2003C ptr changed at 1322941, ptr=00C7003C ptr changed at 1327037, ptr=00B2003C ptr changed at 1331133, ptr=00C7003C ptr changed at 1335229, ptr=00B2003C ptr changed at 1339325, ptr=00C7003C ptr changed at 1343421, ptr=00B2003C ptr changed at 1347517, ptr=00C7003C ptr changed at 1351613, ptr=00B2003C ptr changed at 1355709, ptr=00C7003C ptr changed at 1359805, ptr=00B2003C ptr changed at 1363901, ptr=00C7003C ptr changed at 1367997, ptr=00B2003C ptr changed at 1372093, ptr=00C7003C ptr changed at 1376189, ptr=00DC003C ptr changed at 1380285, ptr=00B2003C ptr changed at 1384381, ptr=00C8003C ptr changed at 1388477, ptr=00B2003C ptr changed at 1392573, ptr=00C8003C ptr changed at 1396669, ptr=00B2003C ptr changed at 1400765, ptr=00C8003C ptr changed at 1404861, ptr=00B2003C ptr changed at 1408957, ptr=00C8003C ptr changed at 1413053, ptr=00B2003C ptr changed at 1417149, ptr=00C8003C ptr changed at 1421245, ptr=00B2003C ptr changed at 1425341, ptr=00C8003C ptr changed at 1429437, ptr=00B2003C ptr changed at 1433533, ptr=00C8003C ptr changed at 1437629, ptr=00B2003C ptr changed at 1441725, ptr=00C8003C ptr changed at 1445821, ptr=00DF003C ptr changed at 1449917, ptr=00B2003C ptr changed at 1454013, ptr=00C9003C ptr changed at 1458109, ptr=00B2003C ptr changed at 1462205, ptr=00C9003C ptr changed at 1466301, ptr=00B2003C ptr changed at 1470397, ptr=00C9003C ptr changed at 1474493, ptr=00B2003C ptr changed at 1478589, ptr=00C9003C ptr changed at 1482685, ptr=00B2003C ptr changed at 1486781, ptr=00C9003C ptr changed at 1490877, ptr=00B2003C ptr changed at 1494973, ptr=00C9003C ptr changed at 1499069, ptr=00B2003C ptr changed at 1503165, ptr=00C9003C ptr changed at 1507261, ptr=00E0003C ptr changed at 1511357, ptr=00B2003C ptr changed at 1515453, ptr=00CA003C ptr changed at 1519549, ptr=00B2003C ptr changed at 1523645, ptr=00CA003C ptr changed at 1527741, ptr=00B2003C ptr changed at 1531837, ptr=00CA003C ptr changed at 1535933, ptr=00B2003C ptr changed at 1540029, ptr=00CA003C ptr changed at 1544125, ptr=00B2003C ptr changed at 1548221, ptr=00CA003C ptr changed at 1552317, ptr=00B2003C ptr changed at 1556413, ptr=00CA003C ptr changed at 1560509, ptr=00B2003C ptr changed at 1564605, ptr=00CA003C ptr changed at 1568701, ptr=00B2003C ptr changed at 1572797, ptr=00CA003C ptr changed at 1576893, ptr=00E3003C ptr changed at 1580989, ptr=00B2003C ptr changed at 1585085, ptr=00CB003C ptr changed at 1589181, ptr=00B2003C ptr changed at 1593277, ptr=00CB003C ptr changed at 1597373, ptr=00B2003C ptr changed at 1601469, ptr=00CB003C ptr changed at 1605565, ptr=00B2003C ptr changed at 1609661, ptr=00CB003C ptr changed at 1613757, ptr=00B2003C ptr changed at 1617853, ptr=00CB003C ptr changed at 1621949, ptr=00B2003C ptr changed at 1626045, ptr=00CB003C ptr changed at 1630141, ptr=00B2003C ptr changed at 1634237, ptr=00CB003C ptr changed at 1638333, ptr=00E4003C ptr changed at 1642429, ptr=00B2003C ptr changed at 1646525, ptr=00CC003C ptr changed at 1650621, ptr=00B2003C ptr changed at 1654717, ptr=00CC003C ptr changed at 1658813, ptr=00B2003C ptr changed at 1662909, ptr=00CC003C ptr changed at 1667005, ptr=00B2003C ptr changed at 1671101, ptr=00CC003C ptr changed at 1675197, ptr=00B2003C ptr changed at 1679293, ptr=00CC003C ptr changed at 1683389, ptr=00B2003C ptr changed at 1687485, ptr=00CC003C ptr changed at 1691581, ptr=00B2003C ptr changed at 1695677, ptr=00CC003C ptr changed at 1699773, ptr=00B2003C ptr changed at 1703869, ptr=00CC003C ptr changed at 1707965, ptr=00E7003C ptr changed at 1712061, ptr=00B2003C ptr changed at 1716157, ptr=00CD003C ptr changed at 1720253, ptr=00B2003C ptr changed at 1724349, ptr=00CD003C ptr changed at 1728445, ptr=00B2003C ptr changed at 1732541, ptr=00CD003C ptr changed at 1736637, ptr=00B2003C ptr changed at 1740733, ptr=00CD003C ptr changed at 1744829, ptr=00B2003C ptr changed at 1748925, ptr=00CD003C ptr changed at 1753021, ptr=00B2003C ptr changed at 1757117, ptr=00CD003C ptr changed at 1761213, ptr=00B2003C ptr changed at 1765309, ptr=00CD003C ptr changed at 1769405, ptr=00E8003C ptr changed at 1773501, ptr=00B2003C ptr changed at 1777597, ptr=00CE003C ptr changed at 1781693, ptr=00B2003C ptr changed at 1785789, ptr=00CE003C ptr changed at 1789885, ptr=00B2003C ptr changed at 1793981, ptr=00CE003C ptr changed at 1798077, ptr=00B2003C ptr changed at 1802173, ptr=00CE003C ptr changed at 1806269, ptr=00B2003C ptr changed at 1810365, ptr=00CE003C ptr changed at 1814461, ptr=00B2003C ptr changed at 1818557, ptr=00CE003C ptr changed at 1822653, ptr=00B2003C ptr changed at 1826749, ptr=00CE003C ptr changed at 1830845, ptr=00B2003C ptr changed at 1834941, ptr=00CE003C ptr changed at 1839037, ptr=00EB003C ptr changed at 1843133, ptr=00B2003C ptr changed at 1847229, ptr=00CF003C ptr changed at 1851325, ptr=00B2003C ptr changed at 1855421, ptr=00CF003C ptr changed at 1859517, ptr=00B2003C ptr changed at 1863613, ptr=00CF003C ptr changed at 1867709, ptr=00B2003C ptr changed at 1871805, ptr=00CF003C ptr changed at 1875901, ptr=00B2003C ptr changed at 1879997, ptr=00CF003C ptr changed at 1884093, ptr=00B2003C ptr changed at 1888189, ptr=00CF003C ptr changed at 1892285, ptr=00B2003C ptr changed at 1896381, ptr=00CF003C ptr changed at 1900477, ptr=00EC003C ptr changed at 1904573, ptr=00B2003C ptr changed at 1908669, ptr=00D0003C ptr changed at 1912765, ptr=00B2003C ptr changed at 1916861, ptr=00D0003C ptr changed at 1920957, ptr=00B2003C ptr changed at 1925053, ptr=00D0003C ptr changed at 1929149, ptr=00B2003C ptr changed at 1933245, ptr=00D0003C ptr changed at 1937341, ptr=00B2003C ptr changed at 1941437, ptr=00D0003C ptr changed at 1945533, ptr=00B2003C ptr changed at 1949629, ptr=00D0003C ptr changed at 1953725, ptr=00B2003C ptr changed at 1957821, ptr=00D0003C ptr changed at 1961917, ptr=00B2003C ptr changed at 1966013, ptr=00D0003C ptr changed at 1970109, ptr=00EF003C ptr changed at 1974205, ptr=00B2003C ptr changed at 1978301, ptr=00D1003C ptr changed at 1982397, ptr=00B2003C ptr changed at 1986493, ptr=00D1003C ptr changed at 1990589, ptr=00B2003C ptr changed at 1994685, ptr=00D1003C ptr changed at 1998781, ptr=00B2003C
Download winalloc.txt
text/plain 12.9k
ptr changed at 520185, ptr=00B20020 ptr changed at 524249, ptr=00BA0020 ptr changed at 528345, ptr=00C30020 ptr changed at 532441, ptr=00B20020 ptr changed at 536537, ptr=00BB0020 ptr changed at 540633, ptr=00B20020 ptr changed at 544729, ptr=00BB0020 ptr changed at 548825, ptr=00B20020 ptr changed at 552921, ptr=00BB0020 ptr changed at 557017, ptr=00B20020 ptr changed at 561113, ptr=00BB0020 ptr changed at 565209, ptr=00B20020 ptr changed at 569305, ptr=00BB0020 ptr changed at 573401, ptr=00B20020 ptr changed at 577497, ptr=00BB0020 ptr changed at 581593, ptr=00B20020 ptr changed at 585689, ptr=00BB0020 ptr changed at 589785, ptr=00C40020 ptr changed at 593881, ptr=00B20020 ptr changed at 597977, ptr=00BC0020 ptr changed at 602073, ptr=00B20020 ptr changed at 606169, ptr=00BC0020 ptr changed at 610265, ptr=00B20020 ptr changed at 614361, ptr=00BC0020 ptr changed at 618457, ptr=00B20020 ptr changed at 622553, ptr=00BC0020 ptr changed at 626649, ptr=00B20020 ptr changed at 630745, ptr=00BC0020 ptr changed at 634841, ptr=00B20020 ptr changed at 638937, ptr=00BC0020 ptr changed at 643033, ptr=00B20020 ptr changed at 647129, ptr=00BC0020 ptr changed at 651225, ptr=00B20020 ptr changed at 655321, ptr=00BC0020 ptr changed at 659417, ptr=00C70020 ptr changed at 663513, ptr=00B20020 ptr changed at 667609, ptr=00BD0020 ptr changed at 671705, ptr=00B20020 ptr changed at 675801, ptr=00BD0020 ptr changed at 679897, ptr=00B20020 ptr changed at 683993, ptr=00BD0020 ptr changed at 688089, ptr=00B20020 ptr changed at 692185, ptr=00BD0020 ptr changed at 696281, ptr=00B20020 ptr changed at 700377, ptr=00BD0020 ptr changed at 704473, ptr=00B20020 ptr changed at 708569, ptr=00BD0020 ptr changed at 712665, ptr=00B20020 ptr changed at 716761, ptr=00BD0020 ptr changed at 720857, ptr=00C80020 ptr changed at 724953, ptr=00B20020 ptr changed at 729049, ptr=00BE0020 ptr changed at 733145, ptr=00B20020 ptr changed at 737241, ptr=00BE0020 ptr changed at 741337, ptr=00B20020 ptr changed at 745433, ptr=00BE0020 ptr changed at 749529, ptr=00B20020 ptr changed at 753625, ptr=00BE0020 ptr changed at 757721, ptr=00B20020 ptr changed at 761817, ptr=00BE0020 ptr changed at 765913, ptr=00B20020 ptr changed at 770009, ptr=00BE0020 ptr changed at 774105, ptr=00B20020 ptr changed at 778201, ptr=00BE0020 ptr changed at 782297, ptr=00B20020 ptr changed at 786393, ptr=00BE0020 ptr changed at 790489, ptr=00CB0020 ptr changed at 794585, ptr=00B20020 ptr changed at 798681, ptr=00BF0020 ptr changed at 802777, ptr=00B20020 ptr changed at 806873, ptr=00BF0020 ptr changed at 810969, ptr=00B20020 ptr changed at 815065, ptr=00BF0020 ptr changed at 819161, ptr=00B20020 ptr changed at 823257, ptr=00BF0020 ptr changed at 827353, ptr=00B20020 ptr changed at 831449, ptr=00BF0020 ptr changed at 835545, ptr=00B20020 ptr changed at 839641, ptr=00BF0020 ptr changed at 843737, ptr=00B20020 ptr changed at 847833, ptr=00BF0020 ptr changed at 851929, ptr=00CC0020 ptr changed at 856025, ptr=00B20020 ptr changed at 860121, ptr=00C00020 ptr changed at 864217, ptr=00B20020 ptr changed at 868313, ptr=00C00020 ptr changed at 872409, ptr=00B20020 ptr changed at 876505, ptr=00C00020 ptr changed at 880601, ptr=00B20020 ptr changed at 884697, ptr=00C00020 ptr changed at 888793, ptr=00B20020 ptr changed at 892889, ptr=00C00020 ptr changed at 896985, ptr=00B20020 ptr changed at 901081, ptr=00C00020 ptr changed at 905177, ptr=00B20020 ptr changed at 909273, ptr=00C00020 ptr changed at 913369, ptr=00B20020 ptr changed at 917465, ptr=00C00020 ptr changed at 921561, ptr=00CF0020 ptr changed at 925657, ptr=00B20020 ptr changed at 929753, ptr=00C10020 ptr changed at 933849, ptr=00B20020 ptr changed at 937945, ptr=00C10020 ptr changed at 942041, ptr=00B20020 ptr changed at 946137, ptr=00C10020 ptr changed at 950233, ptr=00B20020 ptr changed at 954329, ptr=00C10020 ptr changed at 958425, ptr=00B20020 ptr changed at 962521, ptr=00C10020 ptr changed at 966617, ptr=00B20020 ptr changed at 970713, ptr=00C10020 ptr changed at 974809, ptr=00B20020 ptr changed at 978905, ptr=00C10020 ptr changed at 983001, ptr=00D00020 ptr changed at 987097, ptr=00B20020 ptr changed at 991193, ptr=00C20020 ptr changed at 995289, ptr=00B20020 ptr changed at 999385, ptr=00C20020 ptr changed at 1003481, ptr=00B20020 ptr changed at 1007577, ptr=00C20020 ptr changed at 1011673, ptr=00B20020 ptr changed at 1015769, ptr=00C20020 ptr changed at 1019865, ptr=00B20020 ptr changed at 1023961, ptr=00C20020 ptr changed at 1028057, ptr=00B20020 ptr changed at 1032153, ptr=00C20020 ptr changed at 1036249, ptr=00B20020 ptr changed at 1040345, ptr=00C20020 ptr changed at 1044441, ptr=00B20020 ptr changed at 1048537, ptr=00C20020 ptr changed at 1052633, ptr=00D30020 ptr changed at 1056729, ptr=00B20020 ptr changed at 1060825, ptr=00C30020 ptr changed at 1064921, ptr=00B20020 ptr changed at 1069017, ptr=00C30020 ptr changed at 1073113, ptr=00B20020 ptr changed at 1077209, ptr=00C30020 ptr changed at 1081305, ptr=00B20020 ptr changed at 1085401, ptr=00C30020 ptr changed at 1089497, ptr=00B20020 ptr changed at 1093593, ptr=00C30020 ptr changed at 1097689, ptr=00B20020 ptr changed at 1101785, ptr=00C30020 ptr changed at 1105881, ptr=00B20020 ptr changed at 1109977, ptr=00C30020 ptr changed at 1114073, ptr=00D40020 ptr changed at 1118169, ptr=00B20020 ptr changed at 1122265, ptr=00C40020 ptr changed at 1126361, ptr=00B20020 ptr changed at 1130457, ptr=00C40020 ptr changed at 1134553, ptr=00B20020 ptr changed at 1138649, ptr=00C40020 ptr changed at 1142745, ptr=00B20020 ptr changed at 1146841, ptr=00C40020 ptr changed at 1150937, ptr=00B20020 ptr changed at 1155033, ptr=00C40020 ptr changed at 1159129, ptr=00B20020 ptr changed at 1163225, ptr=00C40020 ptr changed at 1167321, ptr=00B20020 ptr changed at 1171417, ptr=00C40020 ptr changed at 1175513, ptr=00B20020 ptr changed at 1179609, ptr=00C40020 ptr changed at 1183705, ptr=00D70020 ptr changed at 1187801, ptr=00B20020 ptr changed at 1191897, ptr=00C50020 ptr changed at 1195993, ptr=00B20020 ptr changed at 1200089, ptr=00C50020 ptr changed at 1204185, ptr=00B20020 ptr changed at 1208281, ptr=00C50020 ptr changed at 1212377, ptr=00B20020 ptr changed at 1216473, ptr=00C50020 ptr changed at 1220569, ptr=00B20020 ptr changed at 1224665, ptr=00C50020 ptr changed at 1228761, ptr=00B20020 ptr changed at 1232857, ptr=00C50020 ptr changed at 1236953, ptr=00B20020 ptr changed at 1241049, ptr=00C50020 ptr changed at 1245145, ptr=00D80020 ptr changed at 1249241, ptr=00B20020 ptr changed at 1253337, ptr=00C60020 ptr changed at 1257433, ptr=00B20020 ptr changed at 1261529, ptr=00C60020 ptr changed at 1265625, ptr=00B20020 ptr changed at 1269721, ptr=00C60020 ptr changed at 1273817, ptr=00B20020 ptr changed at 1277913, ptr=00C60020 ptr changed at 1282009, ptr=00B20020 ptr changed at 1286105, ptr=00C60020 ptr changed at 1290201, ptr=00B20020 ptr changed at 1294297, ptr=00C60020 ptr changed at 1298393, ptr=00B20020 ptr changed at 1302489, ptr=00C60020 ptr changed at 1306585, ptr=00B20020 ptr changed at 1310681, ptr=00C60020 ptr changed at 1314777, ptr=00DB0020 ptr changed at 1318873, ptr=00B20020 ptr changed at 1322969, ptr=00C70020 ptr changed at 1327065, ptr=00B20020 ptr changed at 1331161, ptr=00C70020 ptr changed at 1335257, ptr=00B20020 ptr changed at 1339353, ptr=00C70020 ptr changed at 1343449, ptr=00B20020 ptr changed at 1347545, ptr=00C70020 ptr changed at 1351641, ptr=00B20020 ptr changed at 1355737, ptr=00C70020 ptr changed at 1359833, ptr=00B20020 ptr changed at 1363929, ptr=00C70020 ptr changed at 1368025, ptr=00B20020 ptr changed at 1372121, ptr=00C70020 ptr changed at 1376217, ptr=00DC0020 ptr changed at 1380313, ptr=00B20020 ptr changed at 1384409, ptr=00C80020 ptr changed at 1388505, ptr=00B20020 ptr changed at 1392601, ptr=00C80020 ptr changed at 1396697, ptr=00B20020 ptr changed at 1400793, ptr=00C80020 ptr changed at 1404889, ptr=00B20020 ptr changed at 1408985, ptr=00C80020 ptr changed at 1413081, ptr=00B20020 ptr changed at 1417177, ptr=00C80020 ptr changed at 1421273, ptr=00B20020 ptr changed at 1425369, ptr=00C80020 ptr changed at 1429465, ptr=00B20020 ptr changed at 1433561, ptr=00C80020 ptr changed at 1437657, ptr=00B20020 ptr changed at 1441753, ptr=00C80020 ptr changed at 1445849, ptr=00DF0020 ptr changed at 1449945, ptr=00B20020 ptr changed at 1454041, ptr=00C90020 ptr changed at 1458137, ptr=00B20020 ptr changed at 1462233, ptr=00C90020 ptr changed at 1466329, ptr=00B20020 ptr changed at 1470425, ptr=00C90020 ptr changed at 1474521, ptr=00B20020 ptr changed at 1478617, ptr=00C90020 ptr changed at 1482713, ptr=00B20020 ptr changed at 1486809, ptr=00C90020 ptr changed at 1490905, ptr=00B20020 ptr changed at 1495001, ptr=00C90020 ptr changed at 1499097, ptr=00B20020 ptr changed at 1503193, ptr=00C90020 ptr changed at 1507289, ptr=00E00020 ptr changed at 1511385, ptr=00B20020 ptr changed at 1515481, ptr=00CA0020 ptr changed at 1519577, ptr=00B20020 ptr changed at 1523673, ptr=00CA0020 ptr changed at 1527769, ptr=00B20020 ptr changed at 1531865, ptr=00CA0020 ptr changed at 1535961, ptr=00B20020 ptr changed at 1540057, ptr=00CA0020 ptr changed at 1544153, ptr=00B20020 ptr changed at 1548249, ptr=00CA0020 ptr changed at 1552345, ptr=00B20020 ptr changed at 1556441, ptr=00CA0020 ptr changed at 1560537, ptr=00B20020 ptr changed at 1564633, ptr=00CA0020 ptr changed at 1568729, ptr=00B20020 ptr changed at 1572825, ptr=00CA0020 ptr changed at 1576921, ptr=00E30020 ptr changed at 1581017, ptr=00B20020 ptr changed at 1585113, ptr=00CB0020 ptr changed at 1589209, ptr=00B20020 ptr changed at 1593305, ptr=00CB0020 ptr changed at 1597401, ptr=00B20020 ptr changed at 1601497, ptr=00CB0020 ptr changed at 1605593, ptr=00B20020 ptr changed at 1609689, ptr=00CB0020 ptr changed at 1613785, ptr=00B20020 ptr changed at 1617881, ptr=00CB0020 ptr changed at 1621977, ptr=00B20020 ptr changed at 1626073, ptr=00CB0020 ptr changed at 1630169, ptr=00B20020 ptr changed at 1634265, ptr=00CB0020 ptr changed at 1638361, ptr=00E40020 ptr changed at 1642457, ptr=00B20020 ptr changed at 1646553, ptr=00CC0020 ptr changed at 1650649, ptr=00B20020 ptr changed at 1654745, ptr=00CC0020 ptr changed at 1658841, ptr=00B20020 ptr changed at 1662937, ptr=00CC0020 ptr changed at 1667033, ptr=00B20020 ptr changed at 1671129, ptr=00CC0020 ptr changed at 1675225, ptr=00B20020 ptr changed at 1679321, ptr=00CC0020 ptr changed at 1683417, ptr=00B20020 ptr changed at 1687513, ptr=00CC0020 ptr changed at 1691609, ptr=00B20020 ptr changed at 1695705, ptr=00CC0020 ptr changed at 1699801, ptr=00B20020 ptr changed at 1703897, ptr=00CC0020 ptr changed at 1707993, ptr=00E70020 ptr changed at 1712089, ptr=00B20020 ptr changed at 1716185, ptr=00CD0020 ptr changed at 1720281, ptr=00B20020 ptr changed at 1724377, ptr=00CD0020 ptr changed at 1728473, ptr=00B20020 ptr changed at 1732569, ptr=00CD0020 ptr changed at 1736665, ptr=00B20020 ptr changed at 1740761, ptr=00CD0020 ptr changed at 1744857, ptr=00B20020 ptr changed at 1748953, ptr=00CD0020 ptr changed at 1753049, ptr=00B20020 ptr changed at 1757145, ptr=00CD0020 ptr changed at 1761241, ptr=00B20020 ptr changed at 1765337, ptr=00CD0020 ptr changed at 1769433, ptr=00E80020 ptr changed at 1773529, ptr=00B20020 ptr changed at 1777625, ptr=00CE0020 ptr changed at 1781721, ptr=00B20020 ptr changed at 1785817, ptr=00CE0020 ptr changed at 1789913, ptr=00B20020 ptr changed at 1794009, ptr=00CE0020 ptr changed at 1798105, ptr=00B20020 ptr changed at 1802201, ptr=00CE0020 ptr changed at 1806297, ptr=00B20020 ptr changed at 1810393, ptr=00CE0020 ptr changed at 1814489, ptr=00B20020 ptr changed at 1818585, ptr=00CE0020 ptr changed at 1822681, ptr=00B20020 ptr changed at 1826777, ptr=00CE0020 ptr changed at 1830873, ptr=00B20020 ptr changed at 1834969, ptr=00CE0020 ptr changed at 1839065, ptr=00EB0020 ptr changed at 1843161, ptr=00B20020 ptr changed at 1847257, ptr=00CF0020 ptr changed at 1851353, ptr=00B20020 ptr changed at 1855449, ptr=00CF0020 ptr changed at 1859545, ptr=00B20020 ptr changed at 1863641, ptr=00CF0020 ptr changed at 1867737, ptr=00B20020 ptr changed at 1871833, ptr=00CF0020 ptr changed at 1875929, ptr=00B20020 ptr changed at 1880025, ptr=00CF0020 ptr changed at 1884121, ptr=00B20020 ptr changed at 1888217, ptr=00CF0020 ptr changed at 1892313, ptr=00B20020 ptr changed at 1896409, ptr=00CF0020 ptr changed at 1900505, ptr=00EC0020 ptr changed at 1904601, ptr=00B20020 ptr changed at 1908697, ptr=00D00020 ptr changed at 1912793, ptr=00B20020 ptr changed at 1916889, ptr=00D00020 ptr changed at 1920985, ptr=00B20020 ptr changed at 1925081, ptr=00D00020 ptr changed at 1929177, ptr=00B20020 ptr changed at 1933273, ptr=00D00020 ptr changed at 1937369, ptr=00B20020 ptr changed at 1941465, ptr=00D00020 ptr changed at 1945561, ptr=00B20020 ptr changed at 1949657, ptr=00D00020 ptr changed at 1953753, ptr=00B20020 ptr changed at 1957849, ptr=00D00020 ptr changed at 1961945, ptr=00B20020 ptr changed at 1966041, ptr=00D00020 ptr changed at 1970137, ptr=00EF0020 ptr changed at 1974233, ptr=00B20020 ptr changed at 1978329, ptr=00D10020 ptr changed at 1982425, ptr=00B20020 ptr changed at 1986521, ptr=00D10020 ptr changed at 1990617, ptr=00B20020 ptr changed at 1994713, ptr=00D10020 ptr changed at 1998809, ptr=00B20020
Download cliballoc.txt
text/plain 13k
ptr changed at 9, ptr=002874E0 ptr changed at 17, ptr=00288500 ptr changed at 31489, ptr=00B20048 ptr changed at 520185, ptr=00C20020 ptr changed at 524249, ptr=00CA0020 ptr changed at 528345, ptr=00D30020 ptr changed at 532441, ptr=00C20020 ptr changed at 536537, ptr=00CB0020 ptr changed at 540633, ptr=00C20020 ptr changed at 544729, ptr=00CB0020 ptr changed at 548825, ptr=00C20020 ptr changed at 552921, ptr=00CB0020 ptr changed at 557017, ptr=00C20020 ptr changed at 561113, ptr=00CB0020 ptr changed at 565209, ptr=00C20020 ptr changed at 569305, ptr=00CB0020 ptr changed at 573401, ptr=00C20020 ptr changed at 577497, ptr=00CB0020 ptr changed at 581593, ptr=00C20020 ptr changed at 585689, ptr=00CB0020 ptr changed at 589785, ptr=00D40020 ptr changed at 593881, ptr=00C20020 ptr changed at 597977, ptr=00CC0020 ptr changed at 602073, ptr=00C20020 ptr changed at 606169, ptr=00CC0020 ptr changed at 610265, ptr=00C20020 ptr changed at 614361, ptr=00CC0020 ptr changed at 618457, ptr=00C20020 ptr changed at 622553, ptr=00CC0020 ptr changed at 626649, ptr=00C20020 ptr changed at 630745, ptr=00CC0020 ptr changed at 634841, ptr=00C20020 ptr changed at 638937, ptr=00CC0020 ptr changed at 643033, ptr=00C20020 ptr changed at 647129, ptr=00CC0020 ptr changed at 651225, ptr=00C20020 ptr changed at 655321, ptr=00CC0020 ptr changed at 659417, ptr=00D70020 ptr changed at 663513, ptr=00C20020 ptr changed at 667609, ptr=00CD0020 ptr changed at 671705, ptr=00C20020 ptr changed at 675801, ptr=00CD0020 ptr changed at 679897, ptr=00C20020 ptr changed at 683993, ptr=00CD0020 ptr changed at 688089, ptr=00C20020 ptr changed at 692185, ptr=00CD0020 ptr changed at 696281, ptr=00C20020 ptr changed at 700377, ptr=00CD0020 ptr changed at 704473, ptr=00C20020 ptr changed at 708569, ptr=00CD0020 ptr changed at 712665, ptr=00C20020 ptr changed at 716761, ptr=00CD0020 ptr changed at 720857, ptr=00D80020 ptr changed at 724953, ptr=00C20020 ptr changed at 729049, ptr=00CE0020 ptr changed at 733145, ptr=00C20020 ptr changed at 737241, ptr=00CE0020 ptr changed at 741337, ptr=00C20020 ptr changed at 745433, ptr=00CE0020 ptr changed at 749529, ptr=00C20020 ptr changed at 753625, ptr=00CE0020 ptr changed at 757721, ptr=00C20020 ptr changed at 761817, ptr=00CE0020 ptr changed at 765913, ptr=00C20020 ptr changed at 770009, ptr=00CE0020 ptr changed at 774105, ptr=00C20020 ptr changed at 778201, ptr=00CE0020 ptr changed at 782297, ptr=00C20020 ptr changed at 786393, ptr=00CE0020 ptr changed at 790489, ptr=00DB0020 ptr changed at 794585, ptr=00C20020 ptr changed at 798681, ptr=00CF0020 ptr changed at 802777, ptr=00C20020 ptr changed at 806873, ptr=00CF0020 ptr changed at 810969, ptr=00C20020 ptr changed at 815065, ptr=00CF0020 ptr changed at 819161, ptr=00C20020 ptr changed at 823257, ptr=00CF0020 ptr changed at 827353, ptr=00C20020 ptr changed at 831449, ptr=00CF0020 ptr changed at 835545, ptr=00C20020 ptr changed at 839641, ptr=00CF0020 ptr changed at 843737, ptr=00C20020 ptr changed at 847833, ptr=00CF0020 ptr changed at 851929, ptr=00DC0020 ptr changed at 856025, ptr=00C20020 ptr changed at 860121, ptr=00D00020 ptr changed at 864217, ptr=00C20020 ptr changed at 868313, ptr=00D00020 ptr changed at 872409, ptr=00C20020 ptr changed at 876505, ptr=00D00020 ptr changed at 880601, ptr=00C20020 ptr changed at 884697, ptr=00D00020 ptr changed at 888793, ptr=00C20020 ptr changed at 892889, ptr=00D00020 ptr changed at 896985, ptr=00C20020 ptr changed at 901081, ptr=00D00020 ptr changed at 905177, ptr=00C20020 ptr changed at 909273, ptr=00D00020 ptr changed at 913369, ptr=00C20020 ptr changed at 917465, ptr=00D00020 ptr changed at 921561, ptr=00DF0020 ptr changed at 925657, ptr=00C20020 ptr changed at 929753, ptr=00D10020 ptr changed at 933849, ptr=00C20020 ptr changed at 937945, ptr=00D10020 ptr changed at 942041, ptr=00C20020 ptr changed at 946137, ptr=00D10020 ptr changed at 950233, ptr=00C20020 ptr changed at 954329, ptr=00D10020 ptr changed at 958425, ptr=00C20020 ptr changed at 962521, ptr=00D10020 ptr changed at 966617, ptr=00C20020 ptr changed at 970713, ptr=00D10020 ptr changed at 974809, ptr=00C20020 ptr changed at 978905, ptr=00D10020 ptr changed at 983001, ptr=00E00020 ptr changed at 987097, ptr=00C20020 ptr changed at 991193, ptr=00D20020 ptr changed at 995289, ptr=00C20020 ptr changed at 999385, ptr=00D20020 ptr changed at 1003481, ptr=00C20020 ptr changed at 1007577, ptr=00D20020 ptr changed at 1011673, ptr=00C20020 ptr changed at 1015769, ptr=00D20020 ptr changed at 1019865, ptr=00C20020 ptr changed at 1023961, ptr=00D20020 ptr changed at 1028057, ptr=00C20020 ptr changed at 1032153, ptr=00D20020 ptr changed at 1036249, ptr=00C20020 ptr changed at 1040345, ptr=00D20020 ptr changed at 1044441, ptr=00C20020 ptr changed at 1048537, ptr=00D20020 ptr changed at 1052633, ptr=00E30020 ptr changed at 1056729, ptr=00C20020 ptr changed at 1060825, ptr=00D30020 ptr changed at 1064921, ptr=00C20020 ptr changed at 1069017, ptr=00D30020 ptr changed at 1073113, ptr=00C20020 ptr changed at 1077209, ptr=00D30020 ptr changed at 1081305, ptr=00C20020 ptr changed at 1085401, ptr=00D30020 ptr changed at 1089497, ptr=00C20020 ptr changed at 1093593, ptr=00D30020 ptr changed at 1097689, ptr=00C20020 ptr changed at 1101785, ptr=00D30020 ptr changed at 1105881, ptr=00C20020 ptr changed at 1109977, ptr=00D30020 ptr changed at 1114073, ptr=00E40020 ptr changed at 1118169, ptr=00C20020 ptr changed at 1122265, ptr=00D40020 ptr changed at 1126361, ptr=00C20020 ptr changed at 1130457, ptr=00D40020 ptr changed at 1134553, ptr=00C20020 ptr changed at 1138649, ptr=00D40020 ptr changed at 1142745, ptr=00C20020 ptr changed at 1146841, ptr=00D40020 ptr changed at 1150937, ptr=00C20020 ptr changed at 1155033, ptr=00D40020 ptr changed at 1159129, ptr=00C20020 ptr changed at 1163225, ptr=00D40020 ptr changed at 1167321, ptr=00C20020 ptr changed at 1171417, ptr=00D40020 ptr changed at 1175513, ptr=00C20020 ptr changed at 1179609, ptr=00D40020 ptr changed at 1183705, ptr=00E70020 ptr changed at 1187801, ptr=00C20020 ptr changed at 1191897, ptr=00D50020 ptr changed at 1195993, ptr=00C20020 ptr changed at 1200089, ptr=00D50020 ptr changed at 1204185, ptr=00C20020 ptr changed at 1208281, ptr=00D50020 ptr changed at 1212377, ptr=00C20020 ptr changed at 1216473, ptr=00D50020 ptr changed at 1220569, ptr=00C20020 ptr changed at 1224665, ptr=00D50020 ptr changed at 1228761, ptr=00C20020 ptr changed at 1232857, ptr=00D50020 ptr changed at 1236953, ptr=00C20020 ptr changed at 1241049, ptr=00D50020 ptr changed at 1245145, ptr=00E80020 ptr changed at 1249241, ptr=00C20020 ptr changed at 1253337, ptr=00D60020 ptr changed at 1257433, ptr=00C20020 ptr changed at 1261529, ptr=00D60020 ptr changed at 1265625, ptr=00C20020 ptr changed at 1269721, ptr=00D60020 ptr changed at 1273817, ptr=00C20020 ptr changed at 1277913, ptr=00D60020 ptr changed at 1282009, ptr=00C20020 ptr changed at 1286105, ptr=00D60020 ptr changed at 1290201, ptr=00C20020 ptr changed at 1294297, ptr=00D60020 ptr changed at 1298393, ptr=00C20020 ptr changed at 1302489, ptr=00D60020 ptr changed at 1306585, ptr=00C20020 ptr changed at 1310681, ptr=00D60020 ptr changed at 1314777, ptr=00EB0020 ptr changed at 1318873, ptr=00C20020 ptr changed at 1322969, ptr=00D70020 ptr changed at 1327065, ptr=00C20020 ptr changed at 1331161, ptr=00D70020 ptr changed at 1335257, ptr=00C20020 ptr changed at 1339353, ptr=00D70020 ptr changed at 1343449, ptr=00C20020 ptr changed at 1347545, ptr=00D70020 ptr changed at 1351641, ptr=00C20020 ptr changed at 1355737, ptr=00D70020 ptr changed at 1359833, ptr=00C20020 ptr changed at 1363929, ptr=00D70020 ptr changed at 1368025, ptr=00C20020 ptr changed at 1372121, ptr=00D70020 ptr changed at 1376217, ptr=00EC0020 ptr changed at 1380313, ptr=00C20020 ptr changed at 1384409, ptr=00D80020 ptr changed at 1388505, ptr=00C20020 ptr changed at 1392601, ptr=00D80020 ptr changed at 1396697, ptr=00C20020 ptr changed at 1400793, ptr=00D80020 ptr changed at 1404889, ptr=00C20020 ptr changed at 1408985, ptr=00D80020 ptr changed at 1413081, ptr=00C20020 ptr changed at 1417177, ptr=00D80020 ptr changed at 1421273, ptr=00C20020 ptr changed at 1425369, ptr=00D80020 ptr changed at 1429465, ptr=00C20020 ptr changed at 1433561, ptr=00D80020 ptr changed at 1437657, ptr=00C20020 ptr changed at 1441753, ptr=00D80020 ptr changed at 1445849, ptr=00EF0020 ptr changed at 1449945, ptr=00C20020 ptr changed at 1454041, ptr=00D90020 ptr changed at 1458137, ptr=00C20020 ptr changed at 1462233, ptr=00D90020 ptr changed at 1466329, ptr=00C20020 ptr changed at 1470425, ptr=00D90020 ptr changed at 1474521, ptr=00C20020 ptr changed at 1478617, ptr=00D90020 ptr changed at 1482713, ptr=00C20020 ptr changed at 1486809, ptr=00D90020 ptr changed at 1490905, ptr=00C20020 ptr changed at 1495001, ptr=00D90020 ptr changed at 1499097, ptr=00C20020 ptr changed at 1503193, ptr=00D90020 ptr changed at 1507289, ptr=00F00020 ptr changed at 1511385, ptr=00C20020 ptr changed at 1515481, ptr=00DA0020 ptr changed at 1519577, ptr=00C20020 ptr changed at 1523673, ptr=00DA0020 ptr changed at 1527769, ptr=00C20020 ptr changed at 1531865, ptr=00DA0020 ptr changed at 1535961, ptr=00C20020 ptr changed at 1540057, ptr=00DA0020 ptr changed at 1544153, ptr=00C20020 ptr changed at 1548249, ptr=00DA0020 ptr changed at 1552345, ptr=00C20020 ptr changed at 1556441, ptr=00DA0020 ptr changed at 1560537, ptr=00C20020 ptr changed at 1564633, ptr=00DA0020 ptr changed at 1568729, ptr=00C20020 ptr changed at 1572825, ptr=00DA0020 ptr changed at 1576921, ptr=00F30020 ptr changed at 1581017, ptr=00C20020 ptr changed at 1585113, ptr=00DB0020 ptr changed at 1589209, ptr=00C20020 ptr changed at 1593305, ptr=00DB0020 ptr changed at 1597401, ptr=00C20020 ptr changed at 1601497, ptr=00DB0020 ptr changed at 1605593, ptr=00C20020 ptr changed at 1609689, ptr=00DB0020 ptr changed at 1613785, ptr=00C20020 ptr changed at 1617881, ptr=00DB0020 ptr changed at 1621977, ptr=00C20020 ptr changed at 1626073, ptr=00DB0020 ptr changed at 1630169, ptr=00C20020 ptr changed at 1634265, ptr=00DB0020 ptr changed at 1638361, ptr=00F40020 ptr changed at 1642457, ptr=00C20020 ptr changed at 1646553, ptr=00DC0020 ptr changed at 1650649, ptr=00C20020 ptr changed at 1654745, ptr=00DC0020 ptr changed at 1658841, ptr=00C20020 ptr changed at 1662937, ptr=00DC0020 ptr changed at 1667033, ptr=00C20020 ptr changed at 1671129, ptr=00DC0020 ptr changed at 1675225, ptr=00C20020 ptr changed at 1679321, ptr=00DC0020 ptr changed at 1683417, ptr=00C20020 ptr changed at 1687513, ptr=00DC0020 ptr changed at 1691609, ptr=00C20020 ptr changed at 1695705, ptr=00DC0020 ptr changed at 1699801, ptr=00C20020 ptr changed at 1703897, ptr=00DC0020 ptr changed at 1707993, ptr=00F70020 ptr changed at 1712089, ptr=00C20020 ptr changed at 1716185, ptr=00DD0020 ptr changed at 1720281, ptr=00C20020 ptr changed at 1724377, ptr=00DD0020 ptr changed at 1728473, ptr=00C20020 ptr changed at 1732569, ptr=00DD0020 ptr changed at 1736665, ptr=00C20020 ptr changed at 1740761, ptr=00DD0020 ptr changed at 1744857, ptr=00C20020 ptr changed at 1748953, ptr=00DD0020 ptr changed at 1753049, ptr=00C20020 ptr changed at 1757145, ptr=00DD0020 ptr changed at 1761241, ptr=00C20020 ptr changed at 1765337, ptr=00DD0020 ptr changed at 1769433, ptr=00F80020 ptr changed at 1773529, ptr=00C20020 ptr changed at 1777625, ptr=00DE0020 ptr changed at 1781721, ptr=00C20020 ptr changed at 1785817, ptr=00DE0020 ptr changed at 1789913, ptr=00C20020 ptr changed at 1794009, ptr=00DE0020 ptr changed at 1798105, ptr=00C20020 ptr changed at 1802201, ptr=00DE0020 ptr changed at 1806297, ptr=00C20020 ptr changed at 1810393, ptr=00DE0020 ptr changed at 1814489, ptr=00C20020 ptr changed at 1818585, ptr=00DE0020 ptr changed at 1822681, ptr=00C20020 ptr changed at 1826777, ptr=00DE0020 ptr changed at 1830873, ptr=00C20020 ptr changed at 1834969, ptr=00DE0020 ptr changed at 1839065, ptr=00FB0020 ptr changed at 1843161, ptr=00C20020 ptr changed at 1847257, ptr=00DF0020 ptr changed at 1851353, ptr=00C20020 ptr changed at 1855449, ptr=00DF0020 ptr changed at 1859545, ptr=00C20020 ptr changed at 1863641, ptr=00DF0020 ptr changed at 1867737, ptr=00C20020 ptr changed at 1871833, ptr=00DF0020 ptr changed at 1875929, ptr=00C20020 ptr changed at 1880025, ptr=00DF0020 ptr changed at 1884121, ptr=00C20020 ptr changed at 1888217, ptr=00DF0020 ptr changed at 1892313, ptr=00C20020 ptr changed at 1896409, ptr=00DF0020 ptr changed at 1900505, ptr=00FC0020 ptr changed at 1904601, ptr=00C20020 ptr changed at 1908697, ptr=00E00020 ptr changed at 1912793, ptr=00C20020 ptr changed at 1916889, ptr=00E00020 ptr changed at 1920985, ptr=00C20020 ptr changed at 1925081, ptr=00E00020 ptr changed at 1929177, ptr=00C20020 ptr changed at 1933273, ptr=00E00020 ptr changed at 1937369, ptr=00C20020 ptr changed at 1941465, ptr=00E00020 ptr changed at 1945561, ptr=00C20020 ptr changed at 1949657, ptr=00E00020 ptr changed at 1953753, ptr=00C20020 ptr changed at 1957849, ptr=00E00020 ptr changed at 1961945, ptr=00C20020 ptr changed at 1966041, ptr=00E00020 ptr changed at 1970137, ptr=00FF0020 ptr changed at 1974233, ptr=00C20020 ptr changed at 1978329, ptr=00E10020 ptr changed at 1982425, ptr=00C20020 ptr changed at 1986521, ptr=00E10020 ptr changed at 1990617, ptr=00C20020 ptr changed at 1994713, ptr=00E10020 ptr changed at 1998809, ptr=00C20020
Download alloctests.xs
application/octet-stream 1k

Message body not shown because it is not plain text.

RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 549b
forgot to say, the reason why the Heap* test didn't move the block until half a meg is the "process heap" isn't used by clib malloc (it creates its own heap/memory pool) so the process heap probably (I guess, I can "walk" using the Heap* API it if I had the time and check if its truly empty or not) didn't have a single alloc in it. I can't explain why perl malloc did so many moves under 250 bytes and clib malloc didn't. I might take the c debugger through perl's malloc and see if I can spot anything that might be causing it if I have the time.
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 700b
Staring at the data I generated. I'm jaw dropped. Its not that windows doesn't leave just in case space. It moves the data back and forth continuously between the same couple blocks. I am not an expert on disassembly/REing of windows, but I really dont know what to do or say at how bad the windows heap algorithm is. I dont think that this problem (copying every page like clock work between the same 2 VM blocks) can be solved on P5P. I haven't tried this realloc test with a stand alone C app. I dont know if my data has anything to do with my perl being a DEBUGGING and the -Od compiler flag some how changing the behavior of the windows malloc system (google "debug heap") through the PE header.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org