<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>