[fpc-devel] access violation after using variants and app exits
Graeme Geldenhuys
graemeg.lists at gmail.com
Sun Oct 8 10:37:32 CEST 2006
Hi,
Why is this access violation occuring? The tiIsVariantOfType method
comes from the tiOPF2 project - I am trying to get rid of the last few
Unit Test failures in the tiOPF code using FPC.
tiIsVariantOfType is simplified for the purpose of this example.
I get the output ">>>>> 11111111" and then the "Passed" message, and
then a Access Violation when the app is complete. I also included a
backtrace that shows something strange - VARUTILS_NOINTERFACES().
I am using FPC 2.1.1 (r4760) under Ubuntu Linux 6.06.
Regards,
- Graeme -
--------------- variant_test.lpr -------------------------
program variant_test;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
,Variants;
function tiIsVariantOfType(pVariant : Variant; pVarType : TVarType) : boolean;
begin
if pVarType = varArray then
begin
writeln('>>>>>>> 11111111');
Result := VarIsArray(pVariant);
end
else
begin
writeln('>>>>>>> 22222222');
Result := False;
{ actual code removed to simplify test }
end;
end;
var
lVar: Variant;
begin
lVar := VarArrayOf(['xxx', 'yyy']);
if tiIsVariantOfType(lVar, varArray) then
writeln('Passed')
else
writeln('Failed');
end.
---------------------------------------------------------------
----------- Backtrace ----------------------------
(gdb) run
Starting program: /home/graemeg/programming/tests/variants/variant_test
>>>>>>> 11111111
Passed
Breakpoint 1, 0x08053476 in fpc_raiseexception ()
(gdb) bt
#0 0x08053476 in fpc_raiseexception ()
#1 0x08099e99 in VARUTILS_NOINTERFACES ()
#2 0xb7f071a8 in ?? ()
#3 0x0809d51f in VARUTILS_SAFEARRAYCLEARDATASPACE$PVARARRAY$BOOLEAN$$HRESULT ()
#4 0x0809dab4 in VARUTILS_SAFEARRAYDESTROYDATA$PVARARRAY$$HRESULT ()
#5 0x0809d96f in VARUTILS_SAFEARRAYDESTROY$PVARARRAY$$HRESULT ()
#6 0x0809cbca in VARUTILS_VARIANTCLEAR$TVARDATA$$HRESULT ()
#7 0x08077ac6 in VARIANTS_SYSVARCLEARPROC$TVARDATA ()
#8 0x08053b67 in SYSTEM_VARIANT_CLEAR$TVARDATA ()
#9 0x080bf540 in operatingsystem_parameter_argv ()
#10 0x08055ccd in fpc_finalize ()
#11 0x080bf7d4 in U_SYSTEM_OUTPUT ()
#12 0x080bf550 in U_P$VARIANT_TEST_LVAR ()
#13 0x080483b2 in P$VARIANT_TEST_finalize_implicit () at variant_test.lpr:37
#14 0x08056452 in SYSTEM_FINALIZEUNITS ()
#15 0x080564b3 in SYSTEM_INTERNALEXIT ()
#16 0x08056705 in SYSTEM_DO_EXIT ()
#17 0x08048368 in main () at variant_test.lpr:37
(gdb)
-------------------------------------------------------
--
There's no place like 127.0.0.1
More information about the fpc-devel
mailing list