[fpc-devel] Access Violation with nested DLL's compiled by FPC (and some more info on bug #4538)
Stefan van den Berg
stefan at iquad.nl
Thu Dec 8 10:23:18 CET 2005
I've already asked about this on the community forums on the
freepascal.org site and opened a bug on the bugtracker (bugID #4538).
But none of those show any progress on a solution to the problem I'm having.
First a little backstory: I'm currently, as part of an internship,
porting an application written in Delphi 6 to Free Pascal/Lazarus. The
application consists of a main executable and a bunch of (23, to be
exact) DLL's. The app uses some of these DLL's and some other are used
by the DLL's themselves. To make this more clear, I've schematically
illustrated the situation below.
/ | \
dll2- | --dll1
/ | \
dll3- dll3 -dll2
Dll3 could, for example, be a library which is responsible for logging
(debug)messages to a file on disk.
Right now I've come to the point where every individual part seems to do
what it should do. But when testing the whole package, I came across a
problem, which at first i thought to be a bug in our code. But after
some debugging and after testing with a bunch of simple testcases I
concluded that my problem might be caused by a bug in FPC itself.
The problem is this: When the app calls a function in dll1, which calls
a function in dll2, which calls a function in dll3, an AccessViolation
is thrown when calling the function in dll3.
This problem is blocking further porting efforts, So you can guess that
I'd really like to see this resolved.
What I'd like to ask is, am I doing something wrong? If so, what is it
I'm doing wrong? If not, can anybody confirm the bug (if there is one)
and maybe give a possible ETA for a fix.
FPC versions I've confirmed the problem with are:
official win32 2.0.0 binaries: Access violation when calling a function
in dll3 from dll2 from dll1 from app
home-brew 2.0.3 (built on 6 dec) in win32: AV when calling function in
dll3 from dll2 from dll1 from app
2.1.1 bundled with Lazarus nightly build (6 dec ): AV when calling dll2
from dll1 from app.
I'm the one who submitted bug #4538. At that time I thought the problem
only occurred on win32 when using fpc 2.1.1, because I only tested with
2 levels of dll's. When I ran into the access violation problem again
(with a dll 'tree' of at least 3 levels deep) on Linux using fpc 2.1.1
and 2.0.3, i concluded that probably all the 2.x versions suffer from
somewhat the same problem.
Stefan van den Berg
More information about the fpc-devel