[fpc-pascal] Reproducible code: DLL calling Firebird crashes

Reinier Olislagers reinierolislagers at gmail.com
Mon Sep 29 19:30:03 CEST 2014

On 29/09/2014 17:41, Mark Morgan Lloyd wrote:
> Reinier Olislagers wrote:
>> On 29/09/2014 11:19, Mark Morgan Lloyd wrote:
>>> Reinier Olislagers wrote:
>>>> 2. In businesslayer.pas, $define CRASH to see the problem.
>>>> The code in question is:
>>>> initialization
>>>>   DBLayer:=TDBInterface.Create;
>>>> finalization
>>>>   DBLayer.Free;
>>>> ... so probably initialization order plays a part?!?
>>>> How should I fix this?
>>> What happens if you move the responsibility for initialising and closing
>>> the database connection to the app-level code? In other words, the app
>>> does something like
>> As the demo indicates, that does work (undefine CRASH).
>> What I would like to know what is the cause of this problem - dlls being
>> loaded before some kind - what kind? - of initialization is complete?
>> Anyway, I'll keep digging; probably first looking at geting postgresql
>> support in anyway.
> No, your example shows an implicit initialisation when the backend is
> accessed.
Agreed... but as that code works there's no reason to suspect your
approach won't work & my finished program sucesfully uses your approach ;)

Re bug report: agreed. I'll raise it.

More information about the fpc-pascal mailing list