<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>I don't know about C++, but I do know that when calling Haskell
from C code one must initialize the runtime and then exit it once
finished. I also know that one must only initialize the runtime
once over the course of the program's run. As far as I can tell,
this does not occur in your example.<br>
</p>
<br>
<div class="moz-cite-prefix">On 08/27/2018 09:44 AM, Ольга
Филиппская wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAEE+jX6MmToVr6Zsuh5duYEzd2rjqj0Q5MeH4pnLLQqcPS8SLg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<div dir="ltr">
<div class="gmail_default"
style="font-family:georgia,serif;font-size:large">
<div class="gmail_default">Hello.</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default"
style="font-family:Arial,Helvetica,sans-serif;font-size:small"><font
face="georgia, serif" size="4"><i>Summary: </i>memory is
consumed without releasing when a Haskell DLL (that uses
FFI) is loaded and unloaded in an endless loop.</font><br>
</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default"><i>Details</i>: I'm working on a
C++ project relying on a DLL that uses Haskell code. The DLL
was built with GHC 8.0.1 x64, OS is Windows 7. (Newer
versions of GHC - 8.2.1 and later - do not allow you to
build such DLLs due to some bugs: <a
href="https://ghc.haskell.org/trac/ghc/ticket/14472#no2"
target="_blank" moz-do-not-send="true">ticket #1</a>, <a
href="https://ghc.haskell.org/trac/ghc/ticket/14784#no1"
target="_blank" moz-do-not-send="true">ticker #2</a>). The
C++ project was built with MSVC compiler 2015.</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default"
style="font-family:Arial,Helvetica,sans-serif;font-size:small"><font
face="georgia, serif" size="4">We noticed that memory is
not released when the library is unloaded. I've
constructed a baseline example to reproduce the bug. It
has three files: the first one is <b>HaskellSources.hs</b>(see
attachments). It contains one foreign export function foo.
This foreign export function is necessary to reproduce the
bug. The second file is <b>CWrapper.cpp</b>. I
intentionally didn't include any Haskell function export
because they make no difference for this example. The last
file is the code of the main program (see <b>main.cpp</b>)
that loads the library and unloads it at once in an
endless loop.</font><br>
</div>
<div class="gmail_default"><br>
</div>
<div class="gmail_default"
style="font-family:Arial,Helvetica,sans-serif;font-size:small">
<div class="gmail_default"><font face="georgia, serif"
size="4">There are two cases: whether HaskellExports.o
is included into the library or not.</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4">1. HaskellExports.o is not included into the
library (see attached build script<i> build_no_hs.sh</i>).
Everything works just fine (i.e. amount of memory
consumed by the app is the same before DLL loading and
right after unloading.)</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4">2. HaskellExports.o is included into the
library (see <i>build_w_hs.sh</i>). Memory is not
released after unloading the DLL, after repeated
load/unload cycles memory consumption keeps growing
until finally the application crashes.</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4"><br>
</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4">Is this a known problem? Is it tracked in your
bugtracker? (Or maybe it is not a problem at all and I'm
doing it wrong).</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4"><br>
</font></div>
<div class="gmail_default"><font face="georgia, serif"
size="4">Thank you for your time.</font></div>
</div>
</div>
<div><br>
</div>
-- <br>
<div dir="ltr" class="gmail_signature">
<div dir="ltr"><i>
<div class="gmail_default"
style="font-family:georgia,serif;font-size:large;display:inline">Olga
Philippskaya</div>
.</i><br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
ghc-devs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a>
</pre>
</blockquote>
</body>
</html>