> Le 31 août 2019 à 22:18, Joakim Dahlgren Strandberg <[email protected]> a écrit
> :
>
> Hi Pascal,
>
> Thanks for taking a look at the memory leak issue. I ran valgrind on
> tutorial_03. But I did make an adjustment to the On_Exit procedure to be able
> to stop the gnoga application:
>
> procedure On_Exit (Object : in out Gnoga.Gui.Base.Base_Type'Class) is
> App : constant App_Access := App_Access (Object.Connection_Data);
> View : Gnoga.Gui.View.View_Type;
> begin
> App.My_View.Remove;
> View.Create (App.My_Window.all);
> View.Put_Line ("Application exited.");
> App.My_Window.Close_Connection;
> Gnoga.Application.Multi_Connect.End_Application; -- <---- Just added
> this line
> exception
> when E : others =>
> Gnoga.Log (Message => "On_Exit: " &
> Ada.Exceptions.Exception_Information (E));
> end On_Exit;
>
> My platform is Ubuntu 18.04. Here is output from valgrind:
>
> ~/projects/gnoga-code/bin$ valgrind ./tutorial_03
> ==916== Memcheck, a memory error detector
> ==916== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
> ==916== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
> ==916== Command: ./tutorial_03
> ==916==
> Gnoga :1.5-beta
> Application root :/home/joakim/projects/gnoga-code/
> Executable at :/home/joakim/projects/gnoga-code/bin/
> HTML root :/home/joakim/projects/gnoga-code/html/
> Upload directory :/home/joakim/projects/gnoga-code/upload/
> Templates root :/home/joakim/projects/gnoga-code/templates/
> /js at :/home/joakim/projects/gnoga-code/js/
> /css at :/home/joakim/projects/gnoga-code/css/
> /img at :/home/joakim/projects/gnoga-code/img/
> Boot file :boot.html
> HTTP listen on ::8080
> Multi-connect application.
> Press Ctrl-C to close server.
> 2019-08-31 22:08:10.62 : HTTP Server Started
> 2019-08-31 22:08:15.47 : Requested: Kind: FILE, File: , Query:
> 2019-08-31 22:08:15.55 : Reply:
> /home/joakim/projects/gnoga-code/html/boot.html (text/html)
> 2019-08-31 22:08:15.57 : Requested: Kind: FILE, File: js/jquery.min.js,
> Query:
> 2019-08-31 22:08:15.58 : Reply:
> /home/joakim/projects/gnoga-code/js/jquery.min.js (text/javascript)
> 2019-08-31 22:08:15.60 : Requested: Kind: FILE, File: js/boot.js, Query:
> 2019-08-31 22:08:15.60 : Reply: /home/joakim/projects/gnoga-code/js/boot.js
> (text/javascript)
> 2019-08-31 22:08:15.74 : New connection - ID 1
> 2019-08-31 22:08:16.34 : Sending to default route for Mozilla/5.0 (X11;
> Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 on Linux x86_64
> from 127.0.0.1:53526
> 2019-08-31 22:08:19.84 : Deleting connection - 1
> 2019-08-31 22:08:19.92 : HTTP Server Stopping
> ==916==
> ==916== HEAP SUMMARY:
> ==916== in use at exit: 17,592 bytes in 19 blocks
> ==916== total heap usage: 574 allocs, 555 frees, 177,185 bytes allocated
> ==916==
> ==916== LEAK SUMMARY:
> ==916== definitely lost: 3,104 bytes in 4 blocks
> ==916== indirectly lost: 0 bytes in 0 blocks
> ==916== possibly lost: 0 bytes in 0 blocks
> ==916== still reachable: 14,488 bytes in 15 blocks
> ==916== suppressed: 0 bytes in 0 blocks
> ==916== Rerun with --leak-check=full to see details of leaked memory
> ==916==
> ==916== For counts of detected and suppressed errors, rerun with: -v
> ==916== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Hello Joakim,
I have got detailed results from valgrind of memory leaks after Gnoga server
execution.
There is 4 kinds of them:
- allocation in globals that are not freed before exiting (Watchdog and
Gnoga_HTTP_Server) -> easy to fix
- allocation in GNAT RTE (initialization, Unbounded_String, String,
String_Access and exceptions) -> to be reported to AdaCore
- allocation in HTTP server (container) -> to be reported to Dmitry
- allocation in Multi-Connect application for Connection_Data, user guide said:
-- By default Connection_Data is assumed to be a dynamic object
-- and freed when the connection is closed.
but it seems not to be the case -> investigation is needed.
Regards, Pascal.
http://blady.pagesperso-orange.fr
_______________________________________________
Gnoga-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gnoga-list