hxcpp icon indicating copy to clipboard operation
hxcpp copied to clipboard

Memory leak detected by valgrind

Open mingodad opened this issue 3 years ago • 1 comments

Testing Haxe and hxcpp with this code (Lambda.hx):

/*
Based on http://lisperator.net/pltut/
*/

/* -----[ parser utils ]----- */

class InputStream {
	var _pos: Int;
	var _line: Int;
	public var col(default, null): Int;
    var _max_pos: Int;
    var _input: String;

	public function new(input: String) {
        _input = input;
        _pos = 0;
        _line = 1;
        col = 0;
        _max_pos = _input.length;
	}
	public function next(): Int {
		var ch = _input.charCodeAt(_pos++);
		if (ch == '\n'.code) {++_line; col = 0;} else ++col;
		return ch;
	}
	public function peek(): Int {
		return _pos < _max_pos ? _input.charCodeAt(_pos) : 0;
	}
	public function eof(): Bool {
		return peek() == 0;
	}

	public function croak(msg): Void {
		throw /*new Error*/(msg + " (" + _line + ":" + col + ")");
	}
}

typedef Token = {
	var type: String;
	var value: String;
};

class TokenStream {
    var input: InputStream;
    var current: Token = null;
    final keywords = " let if then else lambda λ true false js:raw  ";

    public function new(the_input: InputStream) {
	input = the_input;
    }
    function is_keyword(x: String): Bool {
        return keywords.indexOf(" " + x + " ") >= 0;
    }
    function is_digit(ch: Int): Bool {
        return ch >= '0'.code && ch <= '9'.code;
    }
    function is_id_start(ch: Int): Bool {
        return (ch >= 'a'.code && ch <= 'z'.code) || (ch >= 'A'.code && ch <= 'Z'.code) || ch == '_'.code || ch == 'λ'.code;
    }
    function is_id(ch: Int): Bool {
        return is_id_start(ch) || "?!-<:>=0123456789".indexOf(String.fromCharCode(ch)) >= 0;
    }
    function is_op_char(ch:Int): Bool {
		return "+-*/%=&|<>!".indexOf(String.fromCharCode(ch)) >= 0;
    }
    function is_punc(ch: Int): Bool {
        return ",;(){}[]:".indexOf(String.fromCharCode(ch)) >= 0;
    }
    function is_whitespace(ch: Int): Bool {
        //return " \t\n".strchr(ch) >= 0;
	return ch == ' '.code ||  ch == '\t'.code || ch == '\n'.code;
    }
    function is_newline(ch: Int): Bool {
        return ch != '\n'.code;
    }
    function read_while(predicate: Int -> Bool): String {
        var buf = new StringBuf();
        while (!input.eof() && predicate(input.peek()))
            buf.addChar(input.next());
        return buf.toString();
    }
    function read_number(): Token {
        var has_dot = false;
        var number = read_while(function(ch: Int): Bool {
            if (ch == '.'.code) {
                if (has_dot) return false;
                has_dot = true;
                return true;
            }
            return is_digit(ch);
        });
        return { type: "num", value:  number };
    }
    function read_ident(): Token {
        var id = read_while(is_id);
        return {
            type  : is_keyword(id) ? "kw" : "var",
            value : id
        };
    }
    function read_escaped(end: Int): String {
		var escaped = false;
		var buf = new StringBuf();
        input.next();
        while (!input.eof()) {
            var ch = input.next();
            if (escaped) {
                buf.addChar(ch);
                escaped = false;
            } else if (ch == '\\'.code) {
                escaped = true;
            } else if (ch == end) {
                break;
            } else {
                buf.addChar(ch);
            }
        }
        return buf.toString();
    }
    function read_string(): Token {
       return { type: "str", value: read_escaped('"'.code) };
    }
    function skip_comment() {
        var ret = read_while(is_newline);
        input.next();
    }
    function read_next(): Token {
        read_while(is_whitespace);
        if (input.eof()) return null;
        var ch = input.peek();
		var col = input.col;
        if (ch == '#'.code) {
            skip_comment();
            return read_next();
        }
        if (ch == '"'.code) return read_string();
        if (is_digit(ch)) return read_number();
        if (is_id_start(ch)) return read_ident();
        if (is_punc(ch)) return {
            type  : "punc",
            value : String.fromCharCode(input.next())
        };
        if (is_op_char(ch)) return {
            type  : "op",
            value : read_while(is_op_char)
        };
        input.croak("Can't handle character: " + ch);
	return null;
    }
    public function peek(): Token {
		if(current == null) current = read_next();
        return current;
    }
    public function next(): Token {
        var tok = current;
        current = null;
        return tok != null ? tok : read_next();
    }
    public function eof(): Bool {
        return peek() == null;
    }
    public function croak(msg: String): Void {
        input.croak(msg);
    }
}

class Lambda {
    static function main() {
        var code = 'sum = lambda(x, y) x + y; println(sum(2, 3));';
		var stream = new InputStream(code);
		var tok_stream = new TokenStream(stream);
		while(!tok_stream.eof()) {
			var tok = tok_stream.next();
#if js
			trace(tok);
#else
			Sys.println(tok);
#end
        }
    }
}

We get this output running under valgrind:

valgrind  --leak-check=full Lambda.cpp/Lambda
==13355== Memcheck, a memory error detector
==13355== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==13355== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info
==13355== Command: Lambda.cpp/Lambda
==13355== 
{ value => sum, type => var }
{ value => =, type => op }
{ value => lambda, type => kw }
{ value => (, type => punc }
{ value => x, type => var }
{ value => ,, type => punc }
{ value => y, type => var }
{ value => ), type => punc }
{ value => x, type => var }
{ value => +, type => op }
{ value => y, type => var }
{ value => ;, type => punc }
{ value => println, type => var }
{ value => (, type => punc }
{ value => sum, type => var }
{ value => (, type => punc }
{ value => 2, type => num }
{ value => ,, type => punc }
{ value => 3, type => num }
{ value => ), type => punc }
{ value => ), type => punc }
{ value => ;, type => punc }
==13355== 
==13355== HEAP SUMMARY:
==13355==     in use at exit: 1,111,444 bytes in 415 blocks
==13355==   total heap usage: 468 allocs, 53 frees, 1,193,542 bytes allocated
==13355== 
==13355== 4 bytes in 1 blocks are definitely lost in loss record 1 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1435AE: _GLOBAL__sub_I_Immix.cpp (in ./Lambda.cpp/Lambda)
==13355==    by 0x1E4E3C: __libc_csu_init (in ./Lambda.cpp/Lambda)
==13355==    by 0x5C0CB87: (below main) (libc-start.c:266)
==13355== 
==13355== 20 bytes in 1 blocks are possibly lost in loss record 4 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E24A: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 20 bytes in 1 blocks are possibly lost in loss record 5 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E266: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 28 bytes in 1 blocks are possibly lost in loss record 7 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D7FA8: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 8 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x180088: hx::Object::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0DD: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 9 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x180088: hx::Object::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0DD: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 10 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E09E: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 11 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E09E: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 12 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E0E7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 13 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E0E7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 14 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E130: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 15 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E130: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 16 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E178: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 17 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E178: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 18 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E1C7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 19 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E1C7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 20 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E22C: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 21 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E22C: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 22 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B268: hx::Class_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E7: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 23 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B268: hx::Class_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E7: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 24 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D8011: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 25 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D8011: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 26 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1821A8: hx::Anon_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F1: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 27 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1821A8: hx::Anon_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F1: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 28 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15D7D6: hx::ArrayBase::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F6: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 29 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15D7D6: hx::ArrayBase::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F6: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 30 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x183B42: hx::EnumBase_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0FB: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 31 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x183B42: hx::EnumBase_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0FB: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 32 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5C4: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1994A5: Math_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 33 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A5D8: hx::Class_obj::Class_obj(String const&, String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), bool (*)(hx::Object*), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0DF: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1994A5: Math_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 34 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x147AF4: haxe::iterators::ArrayIterator_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14470A: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 35 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15911E: haxe::ValueException_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14470F: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 36 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1440AB: haxe::NativeStackTrace_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144714: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 37 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x148B6B: haxe::Exception_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144719: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 38 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x148B89: haxe::Exception_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144719: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 39 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x14463B: Sys_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14471E: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 40 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x14D664: StringBuf_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144723: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 41 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x14567B: Std_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144728: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 42 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x146F0B: Lambda_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14472D: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 43 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x153624: TokenStream_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144732: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 36 bytes in 1 blocks are definitely lost in loss record 44 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18A48E: hx::Class_obj::dupFunctions(String*) (in ./Lambda.cpp/Lambda)
==13355==    by 0x146B24: InputStream_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 104 bytes in 1 blocks are definitely lost in loss record 75 of 110
==13355==    at 0x4C324E2: operator new(unsigned long) (vg_replace_malloc.c:342)
==13355==    by 0x1BEB1F: GetCurrentInfo(bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1BED0E: __hxcpp_thread_current() (in ./Lambda.cpp/Lambda)
==13355==    by 0x1C4792: hx::InitAlloc() (in ./Lambda.cpp/Lambda)
==13355==    by 0x1C4A94: hx::SetTopOfStack(int*, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BBD: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 76 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x180088: hx::Object::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0DD: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 77 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E09E: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 78 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E0E7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 79 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E130: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 80 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E178: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 81 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E1C7: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 82 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18E22C: Dynamic::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E2: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 83 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B268: hx::Class_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0E7: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 84 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D8011: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 85 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1821A8: hx::Anon_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F1: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 86 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15D7D6: hx::ArrayBase::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0F6: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 87 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x183B42: hx::EnumBase_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0FB: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 88 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18B0AC: hx::_hx_RegisterClass(String const&, bool (*)(hx::Object*), String*, String*, Dynamic (*)(), Dynamic (*)(Array<Dynamic>), hx::ObjectPtr<hx::Class_obj>*, Dynamic (*)(String, Array<Dynamic>), void (*)(hx::MarkContext*), void (*)(hx::VisitContext*)) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1994A5: Math_obj::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 89 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x147A34: haxe::iterators::ArrayIterator_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14470A: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 90 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15906D: haxe::ValueException_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14470F: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 91 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x144004: haxe::NativeStackTrace_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144714: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 92 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x148AC4: haxe::Exception_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144719: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 93 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x144594: Sys_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14471E: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 94 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x14D5A4: StringBuf_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144723: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 95 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1455D4: Std_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144728: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 96 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x146E64: Lambda_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x14472D: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 97 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x153564: TokenStream_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x144732: __boot_all() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 140 bytes in 1 blocks are possibly lost in loss record 98 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x146A64: InputStream_obj::__register() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC7: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 180 bytes in 9 blocks are possibly lost in loss record 99 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18BCAD: fromInt(int) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18BF51: Dynamic::Dynamic(int) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D4903: String::charCodeAt(int) const (in ./Lambda.cpp/Lambda)
==13355==    by 0x14652E: InputStream_obj::peek() (in ./Lambda.cpp/Lambda)
==13355==    by 0x146608: InputStream_obj::eof() (in ./Lambda.cpp/Lambda)
==13355==    by 0x153A40: TokenStream_obj::read_while(Dynamic) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1548E2: TokenStream_obj::read_next() (in ./Lambda.cpp/Lambda)
==13355==    by 0x154DBD: TokenStream_obj::eof() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142650: Lambda_obj::main() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BCC: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 280 bytes in 14 blocks are possibly lost in loss record 101 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C10C9: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18BCAD: fromInt(int) (in ./Lambda.cpp/Lambda)
==13355==    by 0x18BF51: Dynamic::Dynamic(int) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D4903: String::charCodeAt(int) const (in ./Lambda.cpp/Lambda)
==13355==    by 0x14652E: InputStream_obj::peek() (in ./Lambda.cpp/Lambda)
==13355==    by 0x146608: InputStream_obj::eof() (in ./Lambda.cpp/Lambda)
==13355==    by 0x153A40: TokenStream_obj::read_while(Dynamic) (in ./Lambda.cpp/Lambda)
==13355==    by 0x15405B: TokenStream_obj::read_ident() (in ./Lambda.cpp/Lambda)
==13355==    by 0x154962: TokenStream_obj::read_next() (in ./Lambda.cpp/Lambda)
==13355==    by 0x154DBD: TokenStream_obj::eof() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142650: Lambda_obj::main() (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 1,280 bytes in 128 blocks are possibly lost in loss record 106 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C105F: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D7F80: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 1,536 bytes in 128 blocks are possibly lost in loss record 107 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C105F: hx::InternalCreateConstBuffer(void const*, int, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1D7F2C: String::__boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x17F0EC: hx::Boot() (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BC2: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== 1,048,576 bytes in 1 blocks are possibly lost in loss record 110 of 110
==13355==    at 0x4C31E83: malloc (vg_replace_malloc.c:307)
==13355==    by 0x1C9281: GlobalAllocator::AllocMoreBlocks(bool&, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1CB3C9: LocalAllocator::CallAlloc(int, unsigned int) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1BEAD8: GetCurrentInfo(bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x1BED0E: __hxcpp_thread_current() (in ./Lambda.cpp/Lambda)
==13355==    by 0x1C4792: hx::InitAlloc() (in ./Lambda.cpp/Lambda)
==13355==    by 0x1C4A94: hx::SetTopOfStack(int*, bool) (in ./Lambda.cpp/Lambda)
==13355==    by 0x142BBD: main (in ./Lambda.cpp/Lambda)
==13355== 
==13355== LEAK SUMMARY:
==13355==    definitely lost: 1,440 bytes in 39 blocks
==13355==    indirectly lost: 0 bytes in 0 blocks
==13355==      possibly lost: 1,055,140 bytes in 306 blocks
==13355==    still reachable: 54,864 bytes in 70 blocks
==13355==         suppressed: 0 bytes in 0 blocks
==13355== Reachable blocks (those to which a pointer was found) are not shown.
==13355== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==13355== 
==13355== For lists of detected and suppressed errors, rerun with: -s
==13355== ERROR SUMMARY: 70 errors from 70 contexts (suppressed: 0 from 0)

mingodad avatar Mar 02 '21 16:03 mingodad

I think these are mostly Ok. I'm 95% sure the "definitely lost" ones from the InternalCreateConstBuffer boot functions should be stored in the mMembers/mStatics c++ static variables. These are for the arrays that store the function names, and are assumed to persist for the duration of the program so this is expected behaviour. Various "possibly lost" entries are coming from charAt where it caches single character strings in an array - the total memory for this should be limited by the number of unique characters cached. There is a possible race condition where the same character my be allocated by multiple threads, but this is unlikely and non-fatal.

Some of the stores could possibly be added to the val_grind roots to reduce the noise.

hughsando avatar Mar 03 '21 01:03 hughsando