Re: objects, crashes, and negative memory oh my [message #51644 is a reply to message #51643] |
Fri, 01 December 2006 10:14   |
Foldy Lajos
Messages: 268 Registered: October 2001
|
Senior Member |
|
|
On Fri, 1 Dec 2006, Pete Warner wrote:
> Here's a program that crashes me every time. The key part seems to be
> the "file_search" followed by the "and" statement. Take either out and
> it doesn't cause me trouble. I'm creating the .txt file because I don't
> know what to search for on your computers, and file_search needs to
> find something. I run between 1 and 10 loops before IDL dies on my
> computer. Tested on 6.1 and 6.3.
>
> pro testfailure
>
> a = 'test_file.txt'
> openw, 1, a
> close, 1
> free_lun, 1
>
> key = 'b'
> count = 0
> print, 'Starting Memory: ', memory(/current)
> while (key ne 'a') do begin
> count++
> b = file_search(a)
> print, 'anystring' and b
> print, 'Memory after iteration ', count, ', ', memory(/current)
> print, 'Hit "a" to exit, anykey to continue'
> key = get_kbrd(1)
> endwhile
> print, 'ending'
>
> end
>
valgrind shows invalid read/free, so it is definitely an IDL bug.
regards,
lajos
$ valgrind /usr/local/rsi/idl/bin/bin.linux.x86/idl
==26303== Memcheck, a memory error detector.
==26303== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al.
==26303== Using LibVEX rev 1658, a library for dynamic binary translation.
==26303== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP.
==26303== Using valgrind-3.2.1, a dynamic binary instrumentation framework.
==26303== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al.
==26303== For more details, rerun with: -v
==26303==
IDL Version 6.3 (linux x86 m32). (c) 2006, Research Systems, Inc.
Installation number: 8209.
Licensed for use by: KFKI RMKI
IDL> testfailure
testfailure
% Compiled module: TESTFAILURE.
Starting Memory: 580997
test_file.txt
Memory after iteration 1, 581085
Hit "a" to exit, anykey to continue
:
==26303== Invalid read of size 4
==26303== at 0x40DDE05: IDL_MemFreeMSG_LONGJMP (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42788F7: IDL_StrDelete (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A1B80: IDL_Delvar (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4293E73: IDL_VarCopy (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A7084: _IDL_interpreter (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x40EE093: IDL_Executive (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4485D5A: IDL_Main (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x8051CB8: main (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/idl)
==26303== Address 0x51B6A68 is 0 bytes inside a block of size 18 free'd
==26303== at 0x401C005: free (vg_replace_malloc.c:233)
==26303== by 0x40DDE21: IDL_MemFreeMSG_LONGJMP (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42788F7: IDL_StrDelete (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A1B80: IDL_Delvar (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x428AEC6: IDL_Deltmp (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A6753: _IDL_interpreter (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x40EE093: IDL_Executive (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4485D5A: IDL_Main (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303==
==26303== Invalid free() / delete / delete[]
==26303== at 0x401C005: free (vg_replace_malloc.c:233)
==26303== by 0x40DDE21: IDL_MemFreeMSG_LONGJMP (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42788F7: IDL_StrDelete (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A1B80: IDL_Delvar (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4293E73: IDL_VarCopy (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A7084: _IDL_interpreter (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x40EE093: IDL_Executive (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4485D5A: IDL_Main (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== Address 0x51B6A68 is 0 bytes inside a block of size 18 free'd
==26303== at 0x401C005: free (vg_replace_malloc.c:233)
==26303== by 0x40DDE21: IDL_MemFreeMSG_LONGJMP (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42788F7: IDL_StrDelete (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A1B80: IDL_Delvar (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x428AEC6: IDL_Deltmp (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x42A6753: _IDL_interpreter (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x40EE093: IDL_Executive (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
==26303== by 0x4485D5A: IDL_Main (in /usr/local/rsi/idl_6.3/bin/bin.linux.x86/libidl.so.6.3)
test_file.txt
Memory after iteration 2, 581073
Hit "a" to exit, anykey to continue
:
|
|
|