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. I was suggesting an explicit initialisation, so that the app can if necessary tell the backend what localisation conventions to use. OK, it's an excuse but it gets you out of the current hole.

In the longer term I think this probably merits a bug report, so that library initialisation etc. can be explored. This does look like a sequencing issue rather than something being on the wrong heap.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to