I'm sorry, but I can not understand why should xHarbour (or any  
platform) be accused for faults of such STUPID user code. Destructor  
is a cleanup/finalization event. Any programmer that attempts to  
STORE the very value being destroyed, should be looking for other  
occupation. This sample is a HORRIBLE code sample, and naive users  
may justifiably use it as reference for their code. We should never  
allow such sample into xHarbour.

Ron

On Mar 31, 2008, at 12:54 PM, Luiz Rafael Culik Guimaraes wrote:

----- Original Message ----- From: "Przemyslaw Czerpak" <druzus- 
[EMAIL PROTECTED]>
Newsgroups: gmane.comp.lang.harbour.devel
To: "Harbour Project Main Developer List." <harbour-pG8skwman 
[EMAIL PROTECTED]>
Sent: Monday, March 31, 2008 3:37 PM
Subject: Re: Accessing big text files with very long lines


> On Mon, 31 Mar 2008, Guy Roussin wrote:
>> >You are wrong. Only Harbour have fully working destructors and
>> >xHarbour doesn't. The xHarbour implementation is too buggy for
>> >serious usage.
>> >Please read docs/destruct.txt and try test code in destruct.prg.
>> Fine thank you, i only need to add this to my code :
>> class FLaccess
>>  ...
>>  destructor close
>>  ...
>> endclass
>> ...
>> method close() class FLaccess
>> fclose(::nHandle)
>> return NIL
>
> Such simple example are also safe in xHarbour.
> But be careful when you will want to operate on complex data in
> xHarbour destructors. The xHarbour's GC is not ready for destructor
> .prg code which may change the reference counters in released blocks
> or move some complex variables. In general you should try to not
> touch any objects or arrays inside destructors in xHarbour.
> The tests/destruct.prg code in Harbour SVN repository is also good
> example which shows some wrong things which may happen in xHarbour.
> Below I'm attaching log file from VALGRIND for destruct.prg compiled
> by xHarbour. As you can see internal xHarbour memory structures  
> becomes
> corrupted by .prg destructors code. Please also note that xHarbour
> can catch it immediately and XHVM still works using pointers to freed
> memory blocks what may cause corruptions in other subsystem which
> may allocate the same memory region.
> Until it will not be fixed in xHarbour I suggest to to use xHarbour
> destructors in complex applications because it may cause unpredicitble
> errors. The destruct.prg code can be used for tests. If you do not  
> have
> VALGRIND then you can make similar test with CodeGuard from BCC.
>
> best regards,
> Przemek
>
>
> ==3235== Memcheck, a memory error detector for x86-linux.
> ==3235== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward  
> et al.
> ==3235== Using valgrind-2.2.0, a program supervision framework for  
> x86-linux.
> ==3235== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward  
> et al.
> ==3235== Valgrind library directory: /usr/lib/valgrind
> ==3235== Command line
> ==3235==    ./destruct
> ==3235== Startup, with flags:
> ==3235==    --tool=memcheck
> ==3235==    --leak-check=yes
> ==3235==    --num-callers=16
> ==3235==    -v
> ==3235== Contents of /proc/version:
> ==3235==   Linux version 2.6.15 (root-bi+AKbBUZKY6gyzm1THtWbp2dZbC/ 
> [EMAIL PROTECTED]) (gcc version 3.4.2 20041017 (Red Hat  
> 3.4.2-6.fc3)) #8 PREEMPT Fri Jun 16 01:11:03 CEST 2006
> ==3235== Reading syms from /home/druzus/CVS/harbour/harbour/tests/ 
> destruct (0x8048000)
> ==3235==    object doesn't have a symbol table
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /lib/ld-2.3.3.so (0x1B8E4000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /usr/lib/valgrind/stage2 (0xB0000000)
> ==3235== Reading syms from /lib/ld-2.3.3.so (0xB1000000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /usr/lib/valgrind/vgskin_memcheck.so  
> (0xB7B9B000)
> ==3235== Reading syms from /lib/tls/libc-2.3.3.so (0xB7DC4000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /lib/libdl-2.3.3.so (0xB7EEC000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading suppressions file: /usr/lib/valgrind/default.supp
> ==3235== REDIRECT soname:libc.so.6(__GI___errno_location) to  
> soname:libpthread.so.0(__errno_location)
> ==3235== REDIRECT soname:libc.so.6(__errno_location) to  
> soname:libpthread.so.0(__errno_location)
> ==3235== REDIRECT soname:libc.so.6(__GI___h_errno_location) to  
> soname:libpthread.so.0(__h_errno_location)
> ==3235== REDIRECT soname:libc.so.6(__h_errno_location) to  
> soname:libpthread.so.0(__h_errno_location)
> ==3235== REDIRECT soname:libc.so.6(__GI___res_state) to  
> soname:libpthread.so.0(__res_state)
> ==3235== REDIRECT soname:libc.so.6(__res_state) to  
> soname:libpthread.so.0(__res_state)
> ==3235== REDIRECT soname:libc.so.6(stpcpy) to  
> *vgpreload_memcheck.so*(stpcpy)
> ==3235== REDIRECT soname:libc.so.6(strnlen) to  
> *vgpreload_memcheck.so*(strnlen)
> ==3235== REDIRECT soname:ld-linux.so.2(stpcpy) to  
> *vgpreload_memcheck.so*(stpcpy)
> ==3235== REDIRECT soname:ld-linux.so.2(strchr) to  
> *vgpreload_memcheck.so*(strchr)
> ==3235==
> ==3235== Reading syms from /usr/lib/valgrind/vg_inject.so (0x1B8FC000)
> ==3235== Reading syms from /usr/lib/valgrind/vgpreload_memcheck.so  
> (0x1B901000)
> ==3235== TRANSLATE: 0x1B8F5A50 redirected to 0x1B90420C
> ==3235== Reading syms from /home/druzus/CVS/xharbour/out/lib/ 
> libxharbour-1.1.0.so (0x1B923000)
> ==3235== Reading syms from /usr/X11R6/lib/libX11.so.6.2 (0x987000)
> ==3235==    object doesn't have a symbol table
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /usr/lib/libncurses.so.5.4 (0x58D8000)
> ==3235== Reading syms from /usr/local/lib/libslang.so.2.0.5  
> (0x1BC64000)
> ==3235==    object doesn't have a symbol table
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /lib/tls/libm-2.3.3.so (0x95C000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /lib/libdl-2.3.3.so (0x981000)
> ==3235==    object doesn't have any debug info
> ==3235== Reading syms from /lib/tls/libc-2.3.3.so (0x833000)
> ==3235==    object doesn't have any debug info
> ==3235== TRANSLATE: 0x896160 redirected to 0x1B904A04
> ==3235== TRANSLATE: 0x896610 redirected to 0x1B905432
> ==3235== TRANSLATE: 0x1B8E47A0 redirected to 0x52BFF040
> ==3235== TRANSLATE: 0x894430 redirected to 0x1B904F30
>
> First simple tests when object is not destroyed by GC
> =====================================================
>
> => o := myClass():new( 0 )
> Hi, I'm INIT method of class: MYCLASS
> => o:className() -> MYCLASS
> => o := NIL
>   Hi, I'm desturctor of class:  MYCLASS
>   I do not store any references to self.
>   It's a safe destructor.
>
> => o := myClass():new( 1 )
> Hi, I'm INIT method of class: MYCLASS
> => o:className() -> MYCLASS
> => o := NIL
>   Hi, I'm desturctor of class:  MYCLASS
>   I'm storing reference to self in instance variable.
>   Bad practice but safe in Harbour because it will be destroyed.
>
> => o := myClass():new( 2 )
> Hi, I'm INIT method of class: MYCLASS
> => o:className() -> MYCLASS
> => o := NIL
>   Hi, I'm desturctor of class:  MYCLASS
>   I'm storing reference to self in class variable.
>   It's programmer bug which should cause RT error.
>
> => o := myClass():new( 3 )
> Hi, I'm INIT method of class: MYCLASS
> => o:className() -> MYCLASS
> => o := NIL
>   Hi, I'm desturctor of class:  MYCLASS
>   I'm storing reference to self in public variable.
>   It's programmer bug which should cause RT error.
>
> Now object will be destroyed by GC
> ==================================
>
> => o := myClass():new( 0 )
> Hi, I'm INIT method of class: MYCLASS
> => o:className() -> MYCLASS
> => create corss reference: a := { o, nil }; a[2] := a; a := NIL
> => o := NIL
> => hb_gcAll()==3235== Invalid read of size 2
> ==3235==    at 0x1BA95197: hb_gcItemRef (garbage.c:488)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADA is 18 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA95293: hb_gcItemRef (garbage.c:490)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73AE0 is 24 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== Invalid write of size 2
> ==3235==    at 0x1BA95296: hb_gcItemRef (garbage.c:494)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADA is 18 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA9529F: hb_gcItemRef (garbage.c:497)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADC is 20 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA95144: hb_gcItemRef (garbage.c:476)
> ==3235==    by 0x1BA952AF: hb_gcItemRef (garbage.c:503)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==3235==
> ==3235== Process terminating with default action of signal 11  
> (SIGSEGV)
> ==3235==  Access not within mapped region at address 0x0
> ==3235==    at 0x1BA95144: hb_gcItemRef (garbage.c:476)
> ==3235==    by 0x1BA952AF: hb_gcItemRef (garbage.c:503)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 20  
> from 1)
> ==3235==
> ==3235== 1 errors in context 1 of 5:
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA95144: hb_gcItemRef (garbage.c:476)
> ==3235==    by 0x1BA952AF: hb_gcItemRef (garbage.c:503)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> ==3235==
> ==3235== 1 errors in context 2 of 5:
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA9529F: hb_gcItemRef (garbage.c:497)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADC is 20 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== 1 errors in context 3 of 5:
> ==3235== Invalid write of size 2
> ==3235==    at 0x1BA95296: hb_gcItemRef (garbage.c:494)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADA is 18 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== 1 errors in context 4 of 5:
> ==3235== Invalid read of size 4
> ==3235==    at 0x1BA95293: hb_gcItemRef (garbage.c:490)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73AE0 is 24 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==
> ==3235== 1 errors in context 5 of 5:
> ==3235== Invalid read of size 2
> ==3235==    at 0x1BA95197: hb_gcItemRef (garbage.c:488)
> ==3235==    by 0x1BA94BAF: hb_memvarsIsMemvarRef (memvars.c:2359)
> ==3235==    by 0x1BA95355: hb_gcCollectAll (garbage.c:662)
> ==3235==    by 0x1BA956D4: HB_FUN_HB_GCALL (garbage.c:940)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x80489AA: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> ==3235==  Address 0x1BD73ADA is 18 bytes inside a block of size 52  
> free'd
> ==3235==    at 0x1B904FB1: free (vg_replace_malloc.c:153)
> ==3235==    by 0x1BABDDA3: hb_arrayRelease (arrays.c:1487)
> ==3235==    by 0x1BA9E8B4: hb_itemClear (fastitem.c:242)
> ==3235==    by 0x1BA9E9E4: hb_itemForwardValue (fastitem.c:96)
> ==3235==    by 0x1BAB0E15: hb_vmPopLocal (hvm.c:9475)
> ==3235==    by 0x1BAA45BA: hb_vmExecute (hvm.c:3232)
> ==3235==    by 0x804898C: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BAA372C: hb_vmExecute (hvm.c:1436)
> ==3235==    by 0x804896E: (within /home/druzus/CVS/harbour/harbour/ 
> tests/destruct)
> ==3235==    by 0x1BAB10A9: hb_vmDo (hvm.c:6988)
> ==3235==    by 0x1BABB8BA: main (mainstd.c:82)
> --3235-- --3235-- supp:   20 Ugly strchr error in /lib/ld-2.3.3.so
> ==3235==
> ==3235== IN SUMMARY: 5 errors from 5 contexts (suppressed: 20 from 1)
> ==3235==
> ==3235== malloc/free: in use at exit: 195422 bytes in 3579 blocks.
> ==3235== malloc/free: 6308 allocs, 2729 frees, 14100808 bytes  
> allocated.
> ==3235==
> ==3235== searching for pointers to 3579 not-freed blocks.
> ==3235== checked 6959084 bytes.
> ==3235==
> ==3235== LEAK SUMMARY:
> ==3235==    definitely lost: 0 bytes in 0 blocks.
> ==3235==    possibly lost:   0 bytes in 0 blocks.
> ==3235==    still reachable: 195422 bytes in 3579 blocks.
> ==3235==         suppressed: 0 bytes in 0 blocks.
> ==3235== Reachable blocks (those to which a pointer was found) are  
> not shown.
> ==3235== To see them, rerun with: --show-reachable=yes
> --3235--     TT/TC: 0 tc sectors discarded.
> --3235--            6085 tt_fast misses.
> --3235-- translate: new     5888 (98191 -> 1365943; ratio 139:10)
> --3235--            discard 1 (23 -> 320; ratio 139:10).
> --3235-- chainings: 4218 chainings, 2 unchainings.
> --3235--  dispatch: 4352731 jumps (bb entries); of them 276952 (6%)  
> unchained.
> --3235--            358/12812 major/minor sched events.
> --3235-- reg-alloc: 955 t-req-spill, 252679+6836 orig+spill uis,
> --3235--            29997 total-reg-rank
> --3235--    sanity: 264 cheap, 11 expensive checks.
> --3235--    ccalls: 28827 C calls, 59% saves+restores avoided  
> (101518 bytes)
> --3235--            38258 args, avg 0.87 setup instrs each (9476  
> bytes)
> --3235--            0% clear the stack (86337 bytes)
> --3235--            9322 retvals, 29% of reg-reg movs avoided (5374  
> bytes)






-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
xHarbour-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xharbour-developers

Reply via email to