{"action":"created","issue":{"url":"https://api.github.com/repos/mirage/mirage/issues/406","labels_url":"https://api.github.com/repos/mirage/mirage/issues/406/labels{/name}","comments_url":"https://api.github.com/repos/mirage/mirage/issues/406/comments","events_url":"https://api.github.com/repos/mirage/mirage/issues/406/events","html_url":"https://github.com/mirage/mirage/issues/406","id":78590750,"number":406,"title":"unikernels generated with mirage-seal run out of memory after a relatively small number of requests","user":{"login":"yomimono","id":4086825,"avatar_url":"https://avatars.githubusercontent.com/u/4086825?v=3","gravatar_id":"","url":"https://api.github.com/users/yomimono","html_url":"https://github.com/yomimono","followers_url":"https://api.github.com/users/yomimono/followers","following_url":"https://api.github.com/users/yomimono/following{/other_user}","gists_url":"https://api.github.com/users/yomimono/gists{/gist_id}","starred_url":"https://api.github.com/users/yomimono/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yomimono/subscriptions","organizations_url":"https://api.github.com/users/yomimono/orgs","repos_url":"https://api.github.com/users/yomimono/repos","events_url":"https://api.github.com/users/yomimono/events{/privacy}","received_events_url":"https://api.github.com/users/yomimono/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-05-20T16:20:22Z","updated_at":"2015-05-20T17:43:50Z","closed_at":null,"body":"Using `mirage-seal` version 0.1.0, a generated unikernel runs out of memory and crashes after ~600 requests in series.  The same content, also served through cohttp (via mirage-http) but without tls, holds up fine through 2,000 requests (and possibly beyond; I tested only for 2,000).\r\n\r\nAll testing was done in a fresh opam switch made specifically for testing mirage-seal; there are no pins, although the `mirage-dev` repository is used.  Here's the output of `opam pin list` and `opam list`:\r\n\r\n```\r\n$ opam pin list\r\n$ opam list\r\n# Installed packages for cryptofun:\r\nasn1-combinators          0.1.2  Combinators for expressing ASN.1 grammars in OCaml\r\nbase-bigarray              base  Bigarray library distributed with the OCaml compiler\r\nbase-bytes                 base  Bytes library distributed with the OCaml compiler\r\nbase-threads               base  Threads library distributed with the OCaml compiler\r\nbase-unix                  base  Unix library distributed with the OCaml compiler\r\nbase64                    2.0.0  Base64 encoding and decoding library\r\nbiniou                    1.0.9  Binary data format designed for speed, safety, ease of use a\r\ncamlp4                 4.02.1+2  Camlp4 is a system for writing extensible parsers for progra\r\ncmdliner                  0.9.7  Declarative definition of command line interfaces for OCaml\r\ncohttp                   0.17.1  HTTP library for Lwt, Async and Mirage\r\nconduit                   0.8.3  Network connection library for TCP and SSL\r\nconf-gmp                      1  Virtual package relying on a GMP lib system installation.\r\nconf-pkg-config             1.0  Virtual package relying on pkg-config installation.\r\ncppo                      1.1.2  Equivalent of the C preprocessor for OCaml programs\r\ncrunch                    1.4.0  Convert a filesystem into a static OCaml module\r\ncstruct                   1.4.0  access C structures via a camlp4 extension\r\nctypes                    0.4.1  Combinators for binding to C libraries without writing any C\r\ndepext                      0.5  Query and install external dependencies of OPAM packages\r\ndns                      0.15.0  DNS client and server implementation\r\ndolog                       1.0  the dumb OCaml logger (lazy and optionally colorful)\r\neasy-format               1.0.2  High-level and functional interface to the Format module of \r\nfieldslib             109.20.03  Syntax extension to define first class values representing r\r\ngmp-xen                   6.0.0  The GNU Multiple Precision Arithmetic Library\r\nio-page                   1.5.1  Allocate memory pages suitable for aligned I/O\r\nipaddr                    2.6.1  IP (and MAC) address representation library\r\nlwt                       2.4.8  A cooperative threads library for OCaml\r\nmagic-mime                1.0.0  Convert file extensions to MIME types\r\nmerlin                    2.1.2  Editor helper, provides completion, typing and sources brows\r\nmirage                    2.5.0  The Mirage library operating system\r\nmirage-clock-unix         1.0.0  A Mirage-compatible Clock library for Unix\r\nmirage-clock-xen          1.0.0  A Mirage-compatible Clock library for Xen\r\nmirage-conduit            2.2.0  Virtual package for the Mirage Conduit transports\r\nmirage-console            2.1.3  A Mirage-compatible Console library for Xen and Unix\r\nmirage-dns                2.0.0  Virtual package for the Mirage DNS transports\r\nmirage-entropy-xen        0.3.0  Mirage entropy device\r\nmirage-http               2.2.0  Mirage HTTP client and server driver\r\nmirage-net-unix           2.2.0  Ethernet network driver for Mirage, using tuntap\r\nmirage-net-xen            1.4.1  Ethernet network device driver for Mirage/Xen\r\nmirage-profile              0.4  Collect profiling information\r\nmirage-seal               0.1.0  HTTPs sealing.\r\nmirage-types              2.3.0  Module type definitions for Mirage-compatible applications\r\nmirage-types-lwt          2.3.0  Lwt module type definitions for Mirage-compatible applicatio\r\nmirage-unix               2.3.1  Mirage OS library for Unix compilation\r\nmirage-xen                2.3.1  MirageOS library for Xen\r\nmirage-xen-minios         0.7.0  Xen MiniOS guest operating system library\r\nmirage-xen-ocaml          2.3.1  MirageOS headers for the OCaml runtime\r\nmirage-xen-posix          2.3.1  MirageOS library for posix headers\r\nnocrypto                  0.4.0  Small functional-style crypto library.\r\nocaml-src                4.02.1  Compiler sources\r\nocamlfind                 1.5.5  A library manager for OCaml\r\nocp-build           1.99.9-beta  Project manager for OCaml\r\nocp-indent                  1.5  A simple tool to indent OCaml programs\r\nocplib-endian               0.8  Optimised functions to read and write int16/32/64 from strin\r\nounit                     2.0.0  Unit testing framework loosely based on HUnit. It is similar\r\nppx_tools                0.99.2  Tools for authors of ppx rewriters and other syntactic tools\r\nre                        1.4.0  RE is a regular expression library for OCaml\r\nsexplib               112.24.01  Library for serializing OCaml values to and from S-expressio\r\nshared-memory-ring        1.1.1  Shared memory rings for RPC and bytestream communications.\r\nstringext                 1.3.1  Extra string functions for OCaml\r\ntcpip                     2.4.3  Userlevel TCP/IP stack\r\ntls                       0.5.0  Transport Layer Security (TLS) in OCaml\r\ntuntap                    1.0.0  TUN/TAP bindings\r\ntype_conv             112.01.01  Library for building type-driven syntax extensions\r\nuri                       1.9.0  RFC3986 URI/URL parsing library\r\nvchan                     2.0.2  Xen Vchan implementation\r\nx509                      0.3.1  X.509 certificate (RFC5280) library\r\nxen-evtchn                1.0.6  Xen event channel bindings.\r\nxen-gnt                   2.2.0  Xen grant table bindings\r\nxenstore                  1.2.5  Xenstore protocol clients and server\r\nxenstore_transport        0.9.4  Low-level libraries for connecting to a xenstore service on \r\nyojson                    1.2.1  Yojson is an optimized parsing and printing library for the \r\nzarith                      1.3  Implements arithmetic and logical operations over arbitrary-\r\n```"},"comment":{"url":"https://api.github.com/repos/mirage/mirage/issues/comments/103971606","html_url":"https://github.com/mirage/mirage/issues/406#issuecomment-103971606","issue_url":"https://api.github.com/repos/mirage/mirage/issues/406","id":103971606,"user":{"login":"samoht","id":103693,"avatar_url":"https://avatars.githubusercontent.com/u/103693?v=3","gravatar_id":"","url":"https://api.github.com/users/samoht","html_url":"https://github.com/samoht","followers_url":"https://api.github.com/users/samoht/followers","following_url":"https://api.github.com/users/samoht/following{/other_user}","gists_url":"https://api.github.com/users/samoht/gists{/gist_id}","starred_url":"https://api.github.com/users/samoht/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samoht/subscriptions","organizations_url":"https://api.github.com/users/samoht/orgs","repos_url":"https://api.github.com/users/samoht/repos","events_url":"https://api.github.com/users/samoht/events{/privacy}","received_events_url":"https://api.github.com/users/samoht/received_events","type":"User","site_admin":false},"created_at":"2015-05-20T17:43:50Z","updated_at":"2015-05-20T17:43:50Z","body":"TLS is exercising the Channel code quite a bilt (as it usually splits the HTTP query/response into chunks) so we might be hitting bugs in cohttp or tpcip ... does the bug is reproducible with sockets?"}}