#1024389 python3-ledger: segfault during garbage collection

Package:
python3-ledger
Source:
python3-ledger
Description:
command-line double-entry accounting program (python3 extension)
Submitter:
Marcin Owsiany
Date:
2026-03-05 17:41:05 UTC
Severity:
normal
Tags:
#1024389#5
Date:
2022-11-18 17:48:53 UTC
From:
To:
Dear Maintainer,

Here is a short repro script, that generates a segmentation violation on
completion. I include a backtrace from GDB, but unfortunately I could not find
debugging symbols for the ledger extension nor libboost-python.

porridge@fujitsu:~/Pulpit/debian/devel/ledgerhelpers/ledgerhelpers$ cat dtor.py
import ledger
session = ledger.Session()
j = session.read_journal_from_string("""
2017-11-23 example
    acct1  1 USD
    acct2
""")

for post in j.query(""):
    pass
print("Done.")
porridge@fujitsu:~/Pulpit/debian/devel/ledgerhelpers/ledgerhelpers$ gdb python3
GNU gdb (Debian 12.1-3) 12.1
[...]
Reading symbols from python3...
Reading symbols from /usr/lib/debug/.build-id/a4/6363cf9ae192e452957ceab1943bb70c310035.debug...
(gdb) r dtor.py
Starting program: /usr/bin/python3 dtor.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Done.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff735efd8 in ledger::journal_t::clear_xdata() () from /usr/lib/python3/dist-packages/ledger.cpython-310-x86_64-linux-gnu.so
(gdb) bt full
#0  0x00007ffff735efd8 in ledger::journal_t::clear_xdata() () from /usr/lib/python3/dist-packages/ledger.cpython-310-x86_64-linux-gnu.so
No symbol table info available.
#1  0x00007ffff7456af2 in ?? () from /usr/lib/python3/dist-packages/ledger.cpython-310-x86_64-linux-gnu.so
No symbol table info available.
#2  0x00007ffff745350d in ?? () from /usr/lib/python3/dist-packages/ledger.cpython-310-x86_64-linux-gnu.so
No symbol table info available.
#3  0x00007ffff75e1a4f in ?? () from /lib/x86_64-linux-gnu/libboost_python310.so.1.74.0
No symbol table info available.
#4  0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680
        basedealloc = 0x7ffff75e1a30
        has_finalizer = <optimized out>
#5  0x00007ffff745880d in boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() ()
   from /usr/lib/python3/dist-packages/ledger.cpython-310-x86_64-linux-gnu.so
No symbol table info available.
#6  0x00007ffff75e1a4f in ?? () from /lib/x86_64-linux-gnu/libboost_python310.so.1.74.0
No symbol table info available.
#7  0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680
        basedealloc = 0x7ffff75e1a30
        has_finalizer = <optimized out>
#8  0x00007ffff75e94a5 in ?? () from /lib/x86_64-linux-gnu/libboost_python310.so.1.74.0
No symbol table info available.
#9  0x00005555556d001b in _PyObject_MakeTpCall (tstate=0x555555b4eab0, callable=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>, args=<optimized out>, nargs=1, keywords=0x0)
    at ../Objects/call.c:215
        call = <optimized out>
        argstuple = (<weakref.ReferenceType at remote 0x7ffff77b0c20>,)
        kwdict = 0x0
        result = 0x0
#10 0x00005555556f1d83 in _PyObject_VectorcallTstate (nargsf=9223372036854775809, kwnames=0x0, args=0x7fffffffdba8, callable=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>,
    tstate=0x555555b4eab0) at ../Include/cpython/abstract.h:112
        nargs = 1
        func = <optimized out>
        res = <optimized out>
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#11 PyObject_CallOneArg (arg=<optimized out>, func=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>) at ../Include/cpython/abstract.h:184
        _args = {<Boost.Python.class at remote 0x7ffff7602680>, <weakref.ReferenceType at remote 0x7ffff77b0c20>}
        args = 0x7fffffffdba8
        tstate = 0x555555b4eab0
        nargsf = 9223372036854775809
        _args = <optimized out>
        args = <optimized out>
        tstate = <optimized out>
        nargsf = <optimized out>
#12 handle_callback (ref=<optimized out>, callback=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>) at ../Objects/weakrefobject.c:952
        cbresult = <optimized out>
#13 0x00005555556ee5e1 in PyObject_ClearWeakRefs (object=<optimized out>) at ../Objects/weakrefobject.c:998
        callback = <Boost.Python.life_support at remote 0x7ffff7bfe0f0>
        current = <optimized out>
        count = 1
        err_type = 0x0
        err_value = 0x0
        err_tb = 0x0
        list = <optimized out>
#14 0x00007ffff75e1a76 in ?? () from /lib/x86_64-linux-gnu/libboost_python310.so.1.74.0
No symbol table info available.
#15 0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680
        basedealloc = 0x7ffff75e1a30
        has_finalizer = <optimized out>
#16 0x00005555556b99c9 in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2300
        dealloc = <optimized out>
        dealloc = <optimized out>
#17 _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#18 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#19 free_keys_object (keys=0x555555c13a60) at ../Objects/dictobject.c:628
        entries = <optimized out>
        i = 12
        n = 13
        state = <optimized out>
#20 0x00005555556b97b4 in dictkeys_decref (dk=<optimized out>) at ../Objects/dictobject.c:337
No locals.
#21 dict_dealloc (mp=0x7ffff773dec0) at ../Objects/dictobject.c:2076
        _tstate = 0x555555b4eab0
        state = <optimized out>
        values = 0x0
        keys = 0x555555c13a60
        i = <optimized out>
        n = <optimized out>
#22 0x00005555557c9890 in _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#23 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#24 module_dealloc (m=0x7ffff772b9c0) at ../Objects/moduleobject.c:686
        verbose = 0
#25 0x00005555556abe9f in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2300
        dealloc = <optimized out>
#26 _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#27 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#28 insertdict (mp=0x7ffff7b76e00, key='__main__', hash=1564999351295253561, value=None) at ../Objects/dictobject.c:1145
        old_value = <module at remote 0x7ffff772b9c0>
        ep = <optimized out>
        ix = <optimized out>
#29 0x00005555557c94ce in finalize_remove_modules (verbose=0, modules={'sys': None, 'builtins': None, '_frozen_importlib': None, '_imp': None, '_thread': None, '_warnings': None, '_weakref': None, '_io': None, 'marshal': None, 'posix': None, '_frozen_importlib_external': None, 'time': None, 'zipimport': None, '_codecs': None, 'codecs': None, 'encodings.aliases': None, 'encodings': None, 'encodings.utf_8': None, '_signal': None, '_abc': None, 'abc': None, 'io': None, '__main__': None, '_stat': <module at remote 0x7ffff77471a0>, 'stat': <module at remote 0x7ffff7746ac0>, '_collections_abc': <module at remote 0x7ffff77469d0>, 'genericpath': <module at remote 0x7ffff7779490>, 'posixpath': <module at remote 0x7ffff7758a90>, 'os.path': <module at remote 0x7ffff7758a90>, 'os': <module at remote 0x7ffff7744b30>, '_sitebuiltins': <module at remote 0x7ffff7746840>, 'sitecustomize': <module at remote 0x7ffff7779d50>, 'site': <module at remote 0x7ffff772bb50>, 'ledger': <module at remote 0x7ffff778c860>}) at ../Python/pylifecycle.c:1379
        pos = 23
        key = '__main__'
        value = <module at remote 0x7ffff772b9c0>
        weaklist = [('sys', <weakref.ReferenceType at remote 0x7ffff7744a40>), ('builtins', <weakref.ReferenceType at remote 0x7ffff7744d10>), ('_frozen_importlib', <weakref.ReferenceType at remote 0x7ffff77aad40>), ('_imp', <weakref.ReferenceType at remote 0x7ffff7bb3740>), ('_thread', <weakref.ReferenceType at remote 0x7ffff7bb31a0>), ('_warnings', <weakref.ReferenceType at remote 0x7ffff77b0bd0>), ('_weakref', <weakref.ReferenceType at remote 0x7ffff77b0c70>), ('_io', <weakref.ReferenceType at remote 0x7ffff77b0cc0>), ('marshal', <weakref.ReferenceType at remote 0x7ffff77b0d10>), ('posix', <weakref.ReferenceType at remote 0x7ffff77b0d60>), ('_frozen_importlib_external', <weakref.ReferenceType at remote 0x7ffff77b0db0>), ('time', <weakref.ReferenceType at remote 0x7ffff77b0e00>), ('zipimport', <weakref.ReferenceType at remote 0x7ffff77b0e50>), ('_codecs', <weakref.ReferenceType at remote 0x7ffff7bb3420>), ('codecs', <weakref.ReferenceType at remote 0x7ffff77b0ea0>), ('encodings.aliases', <weakref.ReferenceType at remote 0x7ff...(truncated)
        weaklist = <optimized out>
        pos = <optimized out>
        key = <optimized out>
        value = <optimized out>
        wr = <optimized out>
        tup = <optimized out>
        iterator = <optimized out>
        key = <optimized out>
        value = <optimized out>
        wr = <optimized out>
        tup = <optimized out>
#30 finalize_modules (tstate=0x555555b4eab0) at ../Python/pylifecycle.c:1515
        interp = 0x555555b32ba0
        modules = {'sys': None, 'builtins': None, '_frozen_importlib': None, '_imp': None, '_thread': None, '_warnings': None, '_weakref': None, '_io': None, 'marshal': None, 'posix': None, '_frozen_importlib_external': None, 'time': None, 'zipimport': None, '_codecs': None, 'codecs': None, 'encodings.aliases': None, 'encodings': None, 'encodings.utf_8': None, '_signal': None, '_abc': None, 'abc': None, 'io': None, '__main__': None, '_stat': <module at remote 0x7ffff77471a0>, 'stat': <module at remote 0x7ffff7746ac0>, '_collections_abc': <module at remote 0x7ffff77469d0>, 'genericpath': <module at remote 0x7ffff7779490>, 'posixpath': <module at remote 0x7ffff7758a90>, 'os.path': <module at remote 0x7ffff7758a90>, 'os': <module at remote 0x7ffff7744b30>, '_sitebuiltins': <module at remote 0x7ffff7746840>, 'sitecustomize': <module at remote 0x7ffff7779d50>, 'site': <module at remote 0x7ffff772bb50>, 'ledger': <module at remote 0x7ffff778c860>}
        verbose = 0
        weaklist = <optimized out>
#31 0x00005555557c6363 in Py_FinalizeEx () at ../Python/pylifecycle.c:1784
        status = <optimized out>
        runtime = <optimized out>
        tstate = 0x555555b4eab0
        malloc_stats = <optimized out>
#32 0x00005555557b8b59 in Py_RunMain () at ../Modules/main.c:668
        exitcode = 0
#33 0x0000555555795117 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:720
        args = {argc = 2, use_bytes_argv = 1, bytes_argv = 0x7fffffffe128, wchar_argv = 0x0}
#34 0x00007ffff7c2920a in __libc_start_call_main (main=main@entry=0x5555557950e0 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe128) at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 5220171832536120077, 140737488347432, 93824994595040, 93824997807672, 140737354125344, -5220171833586435315, -5220189722616218867}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x2, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 2}}}
        not_first_call = <optimized out>
#35 0x00007ffff7c292bc in __libc_start_main_impl (main=0x5555557950e0 <main>, argc=2, argv=0x7fffffffe128, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe118) at ../csu/libc-start.c:389
No locals.
#36 0x0000555555795011 in _start ()
No symbol table info available.
(gdb)

quit
A debugging session is active.

	Inferior 1 [process 222600] will be killed.

Quit anyway? (y or n) y

porridge@fujitsu:~/Pulpit/debian/devel/ledgerhelpers/ledgerhelpers$

#1024389#10
Date:
2022-11-18 18:45:12 UTC
From:
To:
Marcin Owsiany <porridge@debian.org> writes:

Did you try python3-ledger-dbgsym? You need to enable the debian-debug
archive [1]

[1]: https://wiki.debian.org/HowToGetABacktrace

#1024389#15
Date:
2022-11-18 18:45:12 UTC
From:
To:
Marcin Owsiany <porridge@debian.org> writes:

Did you try python3-ledger-dbgsym? You need to enable the debian-debug
archive [1]

[1]: https://wiki.debian.org/HowToGetABacktrace

#1024389#20
Date:
2022-11-19 07:24:27 UTC
From:
To:
Dnia Fri, Nov 18, 2022 at 02:45:12PM -0400, David Bremner napisał(a):

Here is a possibly more useful backtrace, then:

(gdb) r ../ledgerhelpers/dtor.py
Starting program: /usr/bin/python3 ../ledgerhelpers/dtor.py

This GDB supports auto-downloading debuginfo from the following URLs:
https://debuginfod.debian.net
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Done.

Program received signal SIGSEGV, Segmentation fault.
ledger::journal_t::clear_xdata (this=0x555555be3580) at ./src/journal.cc:516
516	  foreach (xact_t * xact, xacts)
(gdb) bt full
#0  ledger::journal_t::clear_xdata (this=0x555555be3580) at ./src/journal.cc:516
        xact = <optimized out>
        _foreach_continue516 = false
        _foreach_end516 = <optimized out>
        _foreach_cur516 = <optimized out>
        _foreach_col516 = <optimized out>
#1  0x00007ffff7456af2 in ledger::(anonymous namespace)::collector_wrapper::~collector_wrapper (this=0x555555c389f0, __in_chrg=<optimized out>) at ./src/py_journal.cc:164
No locals.
#2  boost::checked_delete<ledger::(anonymous namespace)::collector_wrapper> (x=0x555555c389f0) at /usr/include/boost/core/checked_delete.hpp:36
No locals.
#3  boost::checked_delete<ledger::(anonymous namespace)::collector_wrapper> (x=0x555555c389f0) at /usr/include/boost/core/checked_delete.hpp:31
No locals.
#4  boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose (this=<optimized out>) at /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp:89
No locals.
#5  0x00007ffff745350d in boost::detail::sp_counted_base::release (this=0x555555c37730) at /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp:120
No locals.
#6  boost::detail::sp_counted_base::release (this=0x555555c37730) at /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp:116
No locals.
#7  boost::detail::shared_count::~shared_count (this=0x7ffff7742628, __in_chrg=<optimized out>) at /usr/include/boost/smart_ptr/detail/shared_count.hpp:432
No locals.
#8  boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>::~shared_ptr (this=0x7ffff7742620, __in_chrg=<optimized out>) at /usr/include/boost/smart_ptr/shared_ptr.hpp:335
No locals.
#9  boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder (this=0x7ffff7742610, __in_chrg=<optimized out>) at /usr/include/boost/python/object/pointer_holder.hpp:51
No locals.
#10 0x00007ffff75e1a4f in boost::python::objects::instance_dealloc (inst=<PostCollectorWrapper at remote 0x7ffff77425e0>) at libs/python/src/object/class.cpp:335
        p = 0x7ffff7742610
        next = 0x0
        kill_me = 0x7ffff77425e0
#11 0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680 <boost::python::objects::class_type_object>
        basedealloc = 0x7ffff75e1a30 <boost::python::objects::instance_dealloc(PyObject*)>
        has_finalizer = <optimized out>
#12 0x00007ffff745880d in _Py_DECREF (op=<optimized out>) at /usr/include/python3.10/object.h:500
No locals.
#13 boost::python::api::object_base::~object_base (this=0x7ffff7742690, __in_chrg=<optimized out>) at /usr/include/boost/python/object_core.hpp:423
No locals.
#14 boost::python::api::object::~object (this=0x7ffff7742690, __in_chrg=<optimized out>) at /usr/include/boost/python/object_core.hpp:238
No locals.
#15 boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > >::~iterator_range (this=0x7ffff7742690, __in_chrg=<optimized out>) at /usr/include/boost/python/object/iterator.hpp:41
No locals.
#16 boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder (this=0x7ffff7742680, __in_chrg=<optimized out>) at /usr/include/boost/python/object/value_holder.hpp:39
No locals.
#17 0x00007ffff75e1a4f in boost::python::objects::instance_dealloc (inst=<iterator at remote 0x7ffff7742650>) at libs/python/src/object/class.cpp:335
        p = 0x7ffff7742680
        next = 0x0
        kill_me = 0x7ffff7742650
#18 0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680 <boost::python::objects::class_type_object>
        basedealloc = 0x7ffff75e1a30 <boost::python::objects::instance_dealloc(PyObject*)>
        has_finalizer = <optimized out>
#19 0x00007ffff75e94a5 in _Py_DECREF (op=<optimized out>) at /usr/include/python3.10/object.h:500
No locals.
#20 _Py_XDECREF (op=<optimized out>) at /usr/include/python3.10/object.h:567
No locals.
#21 boost::python::objects::life_support_call (self=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>, arg=(<weakref.ReferenceType at remote 0x7ffff77b0d10>,)) at libs/python/src/object/life_support.cpp:30
No locals.
#22 0x00005555556d001b in _PyObject_MakeTpCall (tstate=0x555555b4eca0, callable=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>, args=<optimized out>, nargs=1, keywords=0x0) at ../Objects/call.c:215
        call = <optimized out>
        argstuple = (<weakref.ReferenceType at remote 0x7ffff77b0d10>,)
        kwdict = 0x0
        result = 0x0
#23 0x00005555556f1d83 in _PyObject_VectorcallTstate (nargsf=9223372036854775809, kwnames=0x0, args=0x7fffffffdb28, callable=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>, tstate=0x555555b4eca0) at ../Include/cpython/abstract.h:112
        nargs = 1
        func = <optimized out>
        res = <optimized out>
        func = <optimized out>
        res = <optimized out>
        nargs = <optimized out>
#24 PyObject_CallOneArg (arg=<optimized out>, func=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>) at ../Include/cpython/abstract.h:184
        _args = {<Boost.Python.class at remote 0x7ffff7602680>, <weakref.ReferenceType at remote 0x7ffff77b0d10>}
        args = 0x7fffffffdb28
        tstate = 0x555555b4eca0
        nargsf = 9223372036854775809
        _args = <optimized out>
        args = <optimized out>
        tstate = <optimized out>
        nargsf = <optimized out>
#25 handle_callback (ref=<optimized out>, callback=<Boost.Python.life_support at remote 0x7ffff7bfe0f0>) at ../Objects/weakrefobject.c:952
        cbresult = <optimized out>
#26 0x00005555556ee5e1 in PyObject_ClearWeakRefs (object=<optimized out>) at ../Objects/weakrefobject.c:998
        callback = <Boost.Python.life_support at remote 0x7ffff7bfe0f0>
        current = <optimized out>
        count = 1
        err_type = 0x0
        err_value = 0x0
        err_tb = 0x0
        list = <optimized out>
#27 0x00007ffff75e1a76 in boost::python::objects::instance_dealloc (inst=<Posting at remote 0x7ffff7767b80>) at libs/python/src/object/class.cpp:344
        kill_me = 0x7ffff7767b80
#28 0x00005555556edc76 in subtype_dealloc (self=<optimized out>) at ../Objects/typeobject.c:1460
        _tstate = <optimized out>
        type_needs_decref = 1
        type = <optimized out>
        base = 0x7ffff7602680 <boost::python::objects::class_type_object>
        basedealloc = 0x7ffff75e1a30 <boost::python::objects::instance_dealloc(PyObject*)>
        has_finalizer = <optimized out>
#29 0x00005555556b99c9 in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2300
        dealloc = <optimized out>
        dealloc = <optimized out>
#30 _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#31 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#32 free_keys_object (keys=0x555555c13bd0) at ../Objects/dictobject.c:628
        entries = <optimized out>
        i = 12
        n = 13
        state = <optimized out>
#33 0x00005555556b97b4 in dictkeys_decref (dk=<optimized out>) at ../Objects/dictobject.c:337
No locals.
#34 dict_dealloc (mp=0x7ffff773de00) at ../Objects/dictobject.c:2076
        _tstate = 0x555555b4eca0
        state = <optimized out>
        values = 0x0
        keys = 0x555555c13bd0
        i = <optimized out>
        n = <optimized out>
#35 0x00005555557c9890 in _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#36 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#37 module_dealloc (m=0x7ffff772bab0) at ../Objects/moduleobject.c:686
        verbose = 0
#38 0x00005555556abe9f in _Py_Dealloc (op=<optimized out>) at ../Objects/object.c:2300
        dealloc = <optimized out>
#39 _Py_DECREF (op=<optimized out>) at ../Include/object.h:500
No locals.
#40 _Py_XDECREF (op=<optimized out>) at ../Include/object.h:567
No locals.
#41 insertdict (mp=0x7ffff7b76e00, key='__main__', hash=6830248730966710764, value=None) at ../Objects/dictobject.c:1145
        old_value = <module at remote 0x7ffff772bab0>
        ep = <optimized out>
        ix = <optimized out>
#42 0x00005555557c94ce in finalize_remove_modules (verbose=0, modules={'sys': None, 'builtins': None, '_frozen_importlib': None, '_imp': None, '_thread': None, '_warnings': None, '_weakref': None, '_io': None, 'marshal': None, 'posix': None, '_frozen_importlib_external': None, 'time': None, 'zipimport': None, '_codecs': None, 'codecs': None, 'encodings.aliases': None, 'encodings': None, 'encodings.utf_8': None, '_signal': None, '_abc': None, 'abc': None, 'io': None, '__main__': None, '_stat': <module at remote 0x7ffff7747290>, 'stat': <module at remote 0x7ffff7746bb0>, '_collections_abc': <module at remote 0x7ffff77471f0>, 'genericpath': <module at remote 0x7ffff77795d0>, 'posixpath': <module at remote 0x7ffff7758bd0>, 'os.path': <module at remote 0x7ffff7758bd0>, 'os': <module at remote 0x7ffff7744c20>, '_sitebuiltins': <module at remote 0x7ffff7746930>, 'sitecustomize': <module at remote 0x7ffff7779e90>, 'site': <module at remote 0x7ffff772bc40>, 'ledger': <module at remote 0x7ffff778c950>}) at ../Python/pylifecycle.c:1379
        pos = 23
        key = '__main__'
        value = <module at remote 0x7ffff772bab0>
        weaklist = [('sys', <weakref.ReferenceType at remote 0x7ffff7744b30>), ('builtins', <weakref.ReferenceType at remote 0x7ffff7744e00>), ('_frozen_importlib', <weakref.ReferenceType at remote 0x7ffff77aae30>), ('_imp', <weakref.ReferenceType at remote 0x7ffff7bb3330>), ('_thread', <weakref.ReferenceType at remote 0x7ffff7bb37e0>), ('_warnings', <weakref.ReferenceType at remote 0x7ffff7bb31a0>), ('_weakref', <weakref.ReferenceType at remote 0x7ffff77b0cc0>), ('_io', <weakref.ReferenceType at remote 0x7ffff77b0d60>), ('marshal', <weakref.ReferenceType at remote 0x7ffff77b0db0>), ('posix', <weakref.ReferenceType at remote 0x7ffff77b0e00>), ('_frozen_importlib_external', <weakref.ReferenceType at remote 0x7ffff77b0e50>), ('time', <weakref.ReferenceType at remote 0x7ffff77b0ea0>), ('zipimport', <weakref.ReferenceType at remote 0x7ffff77b0ef0>), ('_codecs', <weakref.ReferenceType at remote 0x7ffff7bd96c0>), ('codecs', <weakref.ReferenceType at remote 0x7ffff77b0f40>), ('encodings.aliases', <weakref.ReferenceType at remote 0x7ff...(truncated)
        weaklist = <optimized out>
        pos = <optimized out>
        key = <optimized out>
        value = <optimized out>
        wr = <optimized out>
        tup = <optimized out>
        iterator = <optimized out>
        key = <optimized out>
        value = <optimized out>
        wr = <optimized out>
        tup = <optimized out>
#43 finalize_modules (tstate=0x555555b4eca0) at ../Python/pylifecycle.c:1515
        interp = 0x555555b32d40
        modules = {'sys': None, 'builtins': None, '_frozen_importlib': None, '_imp': None, '_thread': None, '_warnings': None, '_weakref': None, '_io': None, 'marshal': None, 'posix': None, '_frozen_importlib_external': None, 'time': None, 'zipimport': None, '_codecs': None, 'codecs': None, 'encodings.aliases': None, 'encodings': None, 'encodings.utf_8': None, '_signal': None, '_abc': None, 'abc': None, 'io': None, '__main__': None, '_stat': <module at remote 0x7ffff7747290>, 'stat': <module at remote 0x7ffff7746bb0>, '_collections_abc': <module at remote 0x7ffff77471f0>, 'genericpath': <module at remote 0x7ffff77795d0>, 'posixpath': <module at remote 0x7ffff7758bd0>, 'os.path': <module at remote 0x7ffff7758bd0>, 'os': <module at remote 0x7ffff7744c20>, '_sitebuiltins': <module at remote 0x7ffff7746930>, 'sitecustomize': <module at remote 0x7ffff7779e90>, 'site': <module at remote 0x7ffff772bc40>, 'ledger': <module at remote 0x7ffff778c950>}
        verbose = 0
        weaklist = <optimized out>
#44 0x00005555557c6363 in Py_FinalizeEx () at ../Python/pylifecycle.c:1784
        status = <optimized out>
        runtime = <optimized out>
        tstate = 0x555555b4eca0
        malloc_stats = <optimized out>
#45 0x00005555557b8b59 in Py_RunMain () at ../Modules/main.c:668
        exitcode = 0
#46 0x0000555555795117 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at ../Modules/main.c:720
        args = {argc = 2, use_bytes_argv = 1, bytes_argv = 0x7fffffffe0a8, wchar_argv = 0x0}
#47 0x00007ffff7c2920a in __libc_start_call_main (main=main@entry=0x5555557950e0 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe0a8) at ../sysdeps/nptl/libc_start_call_main.h:58
        self = <optimized out>
        result = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 8777406470338820624, 140737488347304, 93824994595040, 93824997807672, 140737354125344, -8777406471407748592, -8777389044246857200}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x2, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 2}}}
        not_first_call = <optimized out>
#48 0x00007ffff7c292bc in __libc_start_main_impl (main=0x5555557950e0 <main>, argc=2, argv=0x7fffffffe0a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe098) at ../csu/libc-start.c:389
No locals.
#49 0x0000555555795011 in _start ()
No symbol table info available.
(gdb)

#1024389#25
Date:
2022-11-19 07:35:21 UTC
From:
To:
Here is also a result of running the same script under valgrind.
There seems to be plenty room for improvement ;-)

porridge@fujitsu:~/Pulpit/debian/devel/ledgerhelpers/ledger-3.2.1$ valgrind python3 ../ledgerhelpers/dtor.py
==226638== Memcheck, a memory error detector
==226638== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==226638== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
==226638== Command: python3 ../ledgerhelpers/dtor.py
==226638==
Done.
==226638== Invalid read of size 8
==226638==    at 0x57E7FCB: begin (stl_list.h:1023)
==226638==    by 0x57E7FCB: range_begin<std::__cxx11::list<ledger::xact_t*> > (begin.hpp:45)
==226638==    by 0x57E7FCB: begin<std::__cxx11::list<ledger::xact_t*> > (begin.hpp:103)
==226638==    by 0x57E7FCB: begin<std::__cxx11::list<ledger::xact_t*>, mpl_::bool_<false> > (foreach.hpp:680)
==226638==    by 0x57E7FCB: ledger::journal_t::clear_xdata() (journal.cc:516)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4eba840 is 16 bytes inside a block of size 544 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57BA7C9: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C9: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C9: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.c:2300)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:500)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:567)
==226638==    by 0x26D9C8: free_keys_object.lto_priv.0 (dictobject.c:628)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57B518B: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x590D412: operator() (translate_exception.hpp:46)
==226638==    by 0x590D412: operator()<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(const ledger::value_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x590D412: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x590D412: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(ledger::value_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::value_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58A4492: operator() (translate_exception.hpp:46)
==226638==    by 0x58A4492: operator()<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(const ledger::amount_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58A4492: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58A4492: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(ledger::amount_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::amount_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57E7FD8: ledger::journal_t::clear_xdata() (journal.cc:516)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebf2f0 is 16 bytes inside a block of size 24 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB90A: deallocate (new_allocator.h:158)
==226638==    by 0x57EB90A: deallocate (alloc_traits.h:496)
==226638==    by 0x57EB90A: _M_put_node (stl_list.h:522)
==226638==    by 0x57EB90A: _M_clear (list.tcc:81)
==226638==    by 0x57EB90A: ~_List_base (stl_list.h:575)
==226638==    by 0x57EB90A: ~list (stl_list.h:903)
==226638==    by 0x57EB90A: ledger::journal_t::~journal_t() (journal.cc:83)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E9905: allocate (new_allocator.h:137)
==226638==    by 0x57E9905: allocate (alloc_traits.h:464)
==226638==    by 0x57E9905: _M_get_node (stl_list.h:518)
==226638==    by 0x57E9905: _M_create_node<ledger::xact_t* const&> (stl_list.h:710)
==226638==    by 0x57E9905: _M_insert<ledger::xact_t* const&> (stl_list.h:2005)
==226638==    by 0x57E9905: push_back (stl_list.h:1306)
==226638==    by 0x57E9905: ledger::journal_t::add_xact(ledger::xact_t*) (journal.cc:424)
==226638==    by 0x57DFC15: xact_directive (textual.cc:710)
==226638==    by 0x57DFC15: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57E7FDC: ledger::journal_t::clear_xdata() (journal.cc:517)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebdae8 is 8 bytes inside a block of size 352 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB406: ~xact_t (xact.h:113)
==226638==    by 0x57EB406: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB406: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57DDF6A: parse_xact (textual.cc:1791)
==226638==    by 0x57DDF6A: xact_directive (textual.cc:707)
==226638==    by 0x57DDF6A: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F9085: begin (stl_list.h:1023)
==226638==    by 0x57F9085: range_begin<std::__cxx11::list<ledger::post_t*> > (begin.hpp:45)
==226638==    by 0x57F9085: begin<std::__cxx11::list<ledger::post_t*> > (begin.hpp:103)
==226638==    by 0x57F9085: begin<std::__cxx11::list<ledger::post_t*>, mpl_::bool_<false> > (foreach.hpp:680)
==226638==    by 0x57F9085: ledger::xact_base_t::clear_xdata() (xact.cc:97)
==226638==    by 0x57E8064: ledger::journal_t::clear_xdata() (journal.cc:518)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebdbe0 is 256 bytes inside a block of size 352 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB406: ~xact_t (xact.h:113)
==226638==    by 0x57EB406: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB406: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57DDF6A: parse_xact (textual.cc:1791)
==226638==    by 0x57DDF6A: xact_directive (textual.cc:707)
==226638==    by 0x57DDF6A: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F90AD: ledger::xact_base_t::clear_xdata() (xact.cc:97)
==226638==    by 0x57E8064: ledger::journal_t::clear_xdata() (journal.cc:518)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe820 is 16 bytes inside a block of size 24 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57FE00A: deallocate (new_allocator.h:158)
==226638==    by 0x57FE00A: deallocate (alloc_traits.h:496)
==226638==    by 0x57FE00A: _M_put_node (stl_list.h:522)
==226638==    by 0x57FE00A: _M_clear (list.tcc:81)
==226638==    by 0x57FE00A: ~_List_base (stl_list.h:575)
==226638==    by 0x57FE00A: ~list (stl_list.h:903)
==226638==    by 0x57FE00A: ledger::xact_base_t::~xact_base_t() (xact.cc:65)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB3FE: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57F7D67: allocate (new_allocator.h:137)
==226638==    by 0x57F7D67: allocate (alloc_traits.h:464)
==226638==    by 0x57F7D67: _M_get_node (stl_list.h:518)
==226638==    by 0x57F7D67: _M_create_node<ledger::post_t* const&> (stl_list.h:710)
==226638==    by 0x57F7D67: _M_insert<ledger::post_t* const&> (stl_list.h:2005)
==226638==    by 0x57F7D67: push_back (stl_list.h:1306)
==226638==    by 0x57F7D67: ledger::xact_base_t::add_post(ledger::post_t*) (xact.cc:76)
==226638==    by 0x57DF224: parse_xact (textual.cc:1943)
==226638==    by 0x57DF224: xact_directive (textual.cc:707)
==226638==    by 0x57DF224: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57F90B1: ledger::xact_base_t::clear_xdata() (xact.cc:98)
==226638==    by 0x57E8064: ledger::journal_t::clear_xdata() (journal.cc:518)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebdc88 is 8 bytes inside a block of size 552 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57FDF4B: ~post_t (post.h:106)
==226638==    by 0x57FDF4B: checked_delete<ledger::post_t> (checked_delete.hpp:36)
==226638==    by 0x57FDF4B: ledger::xact_base_t::~xact_base_t() (xact.cc:62)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB3FE: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57D5D89: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1403)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57F90B8: destroy (optional.hpp:756)
==226638==    by 0x57F90B8: assign (optional.hpp:357)
==226638==    by 0x57F90B8: operator= (optional.hpp:1101)
==226638==    by 0x57F90B8: clear_xdata (post.h:211)
==226638==    by 0x57F90B8: ledger::xact_base_t::clear_xdata() (xact.cc:99)
==226638==    by 0x57E8064: ledger::journal_t::clear_xdata() (journal.cc:518)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebde48 is 456 bytes inside a block of size 552 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57FDF4B: ~post_t (post.h:106)
==226638==    by 0x57FDF4B: checked_delete<ledger::post_t> (checked_delete.hpp:36)
==226638==    by 0x57FDF4B: ledger::xact_base_t::~xact_base_t() (xact.cc:62)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB3FE: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57D5D89: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1403)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F90A0: operator++ (stl_list.h:289)
==226638==    by 0x57F90A0: next<std::__cxx11::list<ledger::post_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F90A0: ledger::xact_base_t::clear_xdata() (xact.cc:97)
==226638==    by 0x57E8064: ledger::journal_t::clear_xdata() (journal.cc:518)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe810 is 0 bytes inside a block of size 24 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57FE00A: deallocate (new_allocator.h:158)
==226638==    by 0x57FE00A: deallocate (alloc_traits.h:496)
==226638==    by 0x57FE00A: _M_put_node (stl_list.h:522)
==226638==    by 0x57FE00A: _M_clear (list.tcc:81)
==226638==    by 0x57FE00A: ~_List_base (stl_list.h:575)
==226638==    by 0x57FE00A: ~list (stl_list.h:903)
==226638==    by 0x57FE00A: ledger::xact_base_t::~xact_base_t() (xact.cc:65)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: ~xact_t (xact.h:113)
==226638==    by 0x57EB3FE: checked_delete<ledger::xact_t> (checked_delete.hpp:36)
==226638==    by 0x57EB3FE: ledger::journal_t::~journal_t() (journal.cc:74)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57F7D67: allocate (new_allocator.h:137)
==226638==    by 0x57F7D67: allocate (alloc_traits.h:464)
==226638==    by 0x57F7D67: _M_get_node (stl_list.h:518)
==226638==    by 0x57F7D67: _M_create_node<ledger::post_t* const&> (stl_list.h:710)
==226638==    by 0x57F7D67: _M_insert<ledger::post_t* const&> (stl_list.h:2005)
==226638==    by 0x57F7D67: push_back (stl_list.h:1306)
==226638==    by 0x57F7D67: ledger::xact_base_t::add_post(ledger::post_t*) (xact.cc:76)
==226638==    by 0x57DF224: parse_xact (textual.cc:1943)
==226638==    by 0x57DF224: xact_directive (textual.cc:707)
==226638==    by 0x57DF224: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57E8065: operator++ (stl_list.h:289)
==226638==    by 0x57E8065: next<std::__cxx11::list<ledger::xact_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57E8065: ledger::journal_t::clear_xdata() (journal.cc:516)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebf2e0 is 0 bytes inside a block of size 24 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB90A: deallocate (new_allocator.h:158)
==226638==    by 0x57EB90A: deallocate (alloc_traits.h:496)
==226638==    by 0x57EB90A: _M_put_node (stl_list.h:522)
==226638==    by 0x57EB90A: _M_clear (list.tcc:81)
==226638==    by 0x57EB90A: ~_List_base (stl_list.h:575)
==226638==    by 0x57EB90A: ~list (stl_list.h:903)
==226638==    by 0x57EB90A: ledger::journal_t::~journal_t() (journal.cc:83)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E9905: allocate (new_allocator.h:137)
==226638==    by 0x57E9905: allocate (alloc_traits.h:464)
==226638==    by 0x57E9905: _M_get_node (stl_list.h:518)
==226638==    by 0x57E9905: _M_create_node<ledger::xact_t* const&> (stl_list.h:710)
==226638==    by 0x57E9905: _M_insert<ledger::xact_t* const&> (stl_list.h:2005)
==226638==    by 0x57E9905: push_back (stl_list.h:1306)
==226638==    by 0x57E9905: ledger::journal_t::add_xact(ledger::xact_t*) (journal.cc:424)
==226638==    by 0x57DFC15: xact_directive (textual.cc:710)
==226638==    by 0x57DFC15: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57E8071: ledger::journal_t::clear_xdata() (journal.cc:516)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4eba858 is 40 bytes inside a block of size 544 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57BA7C9: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C9: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C9: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.c:2300)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:500)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:567)
==226638==    by 0x26D9C8: free_keys_object.lto_priv.0 (dictobject.c:628)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57B518B: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x590D412: operator() (translate_exception.hpp:46)
==226638==    by 0x590D412: operator()<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(const ledger::value_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x590D412: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x590D412: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(ledger::value_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::value_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58A4492: operator() (translate_exception.hpp:46)
==226638==    by 0x58A4492: operator()<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(const ledger::amount_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58A4492: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58A4492: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(ledger::amount_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::amount_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57E8012: begin (stl_list.h:1023)
==226638==    by 0x57E8012: range_begin<std::__cxx11::list<ledger::period_xact_t*> > (begin.hpp:45)
==226638==    by 0x57E8012: begin<std::__cxx11::list<ledger::period_xact_t*> > (begin.hpp:103)
==226638==    by 0x57E8012: begin<std::__cxx11::list<ledger::period_xact_t*>, mpl_::bool_<false> > (foreach.hpp:680)
==226638==    by 0x57E8012: ledger::journal_t::clear_xdata() (journal.cc:524)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4eba870 is 64 bytes inside a block of size 544 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57BA7C9: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C9: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C9: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.c:2300)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:500)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:567)
==226638==    by 0x26D9C8: free_keys_object.lto_priv.0 (dictobject.c:628)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57B518B: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x590D412: operator() (translate_exception.hpp:46)
==226638==    by 0x590D412: operator()<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(const ledger::value_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x590D412: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x590D412: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(ledger::value_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::value_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58A4492: operator() (translate_exception.hpp:46)
==226638==    by 0x58A4492: operator()<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(const ledger::amount_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58A4492: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58A4492: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(ledger::amount_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::amount_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57E8032: ledger::journal_t::clear_xdata() (journal.cc:528)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4eba830 is 0 bytes inside a block of size 544 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57BA7C9: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C9: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C9: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.c:2300)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:500)
==226638==    by 0x26D9C8: UnknownInlinedFun (object.h:567)
==226638==    by 0x26D9C8: free_keys_object.lto_priv.0 (dictobject.c:628)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57B518B: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x590D412: operator() (translate_exception.hpp:46)
==226638==    by 0x590D412: operator()<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(const ledger::value_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x590D412: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x590D412: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::value_error, void (*)(ledger::value_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::value_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58A4492: operator() (translate_exception.hpp:46)
==226638==    by 0x58A4492: operator()<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(const ledger::amount_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58A4492: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58A4492: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::amount_error, void (*)(ledger::amount_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::amount_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57F0D0D: destroy (optional.hpp:756)
==226638==    by 0x57F0D0D: assign (optional.hpp:357)
==226638==    by 0x57F0D0D: operator= (optional.hpp:1101)
==226638==    by 0x57F0D0D: ledger::account_t::clear_xdata() (account.cc:606)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebabe0 is 336 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E7A49: ledger::journal_t::initialize() (journal.cc:87)
==226638==    by 0x57EB359: ledger::journal_t::journal_t() (journal.cc:47)
==226638==    by 0x57B5425: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F0D16: begin (stl_tree.h:996)
==226638==    by 0x57F0D16: begin (stl_map.h:367)
==226638==    by 0x57F0D16: range_begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*> > (begin.hpp:45)
==226638==    by 0x57F0D16: begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*> > (begin.hpp:103)
==226638==    by 0x57F0D16: begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:680)
==226638==    by 0x57F0D16: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebab10 is 128 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E7A49: ledger::journal_t::initialize() (journal.cc:87)
==226638==    by 0x57EB359: ledger::journal_t::journal_t() (journal.cc:47)
==226638==    by 0x57B5425: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F0D26: ledger::account_t::clear_xdata() (account.cc:609)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebe340 is 64 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4D47: deallocate (new_allocator.h:158)
==226638==    by 0x57F4D47: deallocate (alloc_traits.h:496)
==226638==    by 0x57F4D47: _M_put_node (stl_tree.h:565)
==226638==    by 0x57F4D47: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57F4D47: _M_erase (stl_tree.h:1937)
==226638==    by 0x57F4D47: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D47: ~map (stl_map.h:312)
==226638==    by 0x57F4D47: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57F0D2A: ledger::account_t::clear_xdata() (account.cc:609)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Address 0x4ebdef8 is 8 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4C44: ~account_t (account.cc:50)
==226638==    by 0x57F4C44: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57F4C44: ledger::account_t::~account_t() (account.cc:47)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57EF722: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:83)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==
==226638== Invalid read of size 1
==226638==    at 0x57F0D0D: destroy (optional.hpp:756)
==226638==    by 0x57F0D0D: assign (optional.hpp:357)
==226638==    by 0x57F0D0D: operator= (optional.hpp:1101)
==226638==    by 0x57F0D0D: ledger::account_t::clear_xdata() (account.cc:606)
==226638==    by 0x57F0D54: ledger::account_t::clear_xdata() (account.cc:610)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe040 is 336 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4C44: ~account_t (account.cc:50)
==226638==    by 0x57F4C44: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57F4C44: ledger::account_t::~account_t() (account.cc:47)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57EF722: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:83)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x57F0D16: begin (stl_tree.h:996)
==226638==    by 0x57F0D16: begin (stl_map.h:367)
==226638==    by 0x57F0D16: range_begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*> > (begin.hpp:45)
==226638==    by 0x57F0D16: begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*> > (begin.hpp:103)
==226638==    by 0x57F0D16: begin<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:680)
==226638==    by 0x57F0D16: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x57F0D54: ledger::account_t::clear_xdata() (account.cc:610)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebdf70 is 128 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4C44: ~account_t (account.cc:50)
==226638==    by 0x57F4C44: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57F4C44: ledger::account_t::~account_t() (account.cc:47)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57EF722: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:83)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0BD4: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe318 is 24 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4D47: deallocate (new_allocator.h:158)
==226638==    by 0x57F4D47: deallocate (alloc_traits.h:496)
==226638==    by 0x57F4D47: _M_put_node (stl_tree.h:565)
==226638==    by 0x57F4D47: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57F4D47: _M_erase (stl_tree.h:1937)
==226638==    by 0x57F4D47: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D47: ~map (stl_map.h:312)
==226638==    by 0x57F4D47: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0BE3: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebef00 is 16 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EE28E: deallocate (new_allocator.h:158)
==226638==    by 0x57EE28E: deallocate (alloc_traits.h:496)
==226638==    by 0x57EE28E: _M_put_node (stl_tree.h:565)
==226638==    by 0x57EE28E: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57EE28E: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >*) [clone .isra.0] (stl_tree.h:1937)
==226638==    by 0x57F4D12: _M_erase (stl_tree.h:1935)
==226638==    by 0x57F4D12: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D12: ~map (stl_map.h:312)
==226638==    by 0x57F4D12: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0BF0: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebeef8 is 8 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EE28E: deallocate (new_allocator.h:158)
==226638==    by 0x57EE28E: deallocate (alloc_traits.h:496)
==226638==    by 0x57EE28E: _M_put_node (stl_tree.h:565)
==226638==    by 0x57EE28E: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57EE28E: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >*) [clone .isra.0] (stl_tree.h:1937)
==226638==    by 0x57F4D12: _M_erase (stl_tree.h:1935)
==226638==    by 0x57F4D12: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D12: ~map (stl_map.h:312)
==226638==    by 0x57F4D12: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0BF4: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe318 is 24 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4D47: deallocate (new_allocator.h:158)
==226638==    by 0x57F4D47: deallocate (alloc_traits.h:496)
==226638==    by 0x57F4D47: _M_put_node (stl_tree.h:565)
==226638==    by 0x57F4D47: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57F4D47: _M_erase (stl_tree.h:1937)
==226638==    by 0x57F4D47: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D47: ~map (stl_map.h:312)
==226638==    by 0x57F4D47: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0C03: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe308 is 8 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4D47: deallocate (new_allocator.h:158)
==226638==    by 0x57F4D47: deallocate (alloc_traits.h:496)
==226638==    by 0x57F4D47: _M_put_node (stl_tree.h:565)
==226638==    by 0x57F4D47: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57F4D47: _M_erase (stl_tree.h:1937)
==226638==    by 0x57F4D47: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D47: ~map (stl_map.h:312)
==226638==    by 0x57F4D47: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0C07: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebab18 is 136 bytes inside a block of size 976 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==    by 0x5EEDA75: instance_dealloc (class.cpp:344)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E7A49: ledger::journal_t::initialize() (journal.cc:87)
==226638==    by 0x57EB359: ledger::journal_t::journal_t() (journal.cc:47)
==226638==    by 0x57B5425: ledger::session_t::session_t() (session.cc:62)
==226638==    by 0x58FB017: value_holder (value_holder.hpp:131)
==226638==    by 0x58FB017: boost::python::objects::make_holder<0>::apply<boost::python::objects::value_holder<ledger::session_t>, boost::mpl::vector0<mpl_::na> >::execute(_object*) (make_holder.hpp:94)
==226638==    by 0x588BA6D: UnknownInlinedFun (invoke.hpp:79)
==226638==    by 0x588BA6D: operator() (caller.hpp:233)
==226638==    by 0x588BA6D: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<void (*)(_object*), boost::python::default_call_policies, boost::mpl::vector2<void, _object*> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==    by 0x5EF1627: operator() (function.cpp:581)
==226638==    by 0x5EF1627: boost::detail::function::void_function_ref_invoker0<boost::python::objects::(anonymous namespace)::bind_return, void>::invoke(boost::detail::function::function_buffer&) (function_template.hpp:193)
==226638==    by 0x5EF659A: operator() (function_template.hpp:763)
==226638==    by 0x5EF659A: boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const (errors.cpp:74)
==226638==    by 0x58E4692: operator() (translate_exception.hpp:46)
==226638==    by 0x58E4692: operator()<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(const ledger::error_count&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E4692: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E4692: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::error_count, void (*)(ledger::error_count const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::error_count const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58E46E2: operator() (translate_exception.hpp:46)
==226638==    by 0x58E46E2: operator()<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(const ledger::parse_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58E46E2: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58E46E2: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::parse_error, void (*)(ledger::parse_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::parse_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==    by 0x58AF372: operator() (translate_exception.hpp:46)
==226638==    by 0x58AF372: operator()<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(const ledger::balance_error&)>, boost::_bi::rrlist2<const boost::python::detail::exception_handler&, const boost::function0<void>&> > (bind.hpp:388)
==226638==    by 0x58AF372: operator()<const boost::python::detail::exception_handler&, const boost::function0<void>&> (bind.hpp:1318)
==226638==    by 0x58AF372: boost::detail::function::function_obj_invoker2<boost::_bi::bind_t<bool, boost::python::detail::translate_exception<ledger::balance_error, void (*)(ledger::balance_error const&)>, boost::_bi::list3<boost::arg<1>, boost::arg<2>, boost::_bi::value<void (*)(ledger::balance_error const&)> > >, bool, boost::python::detail::exception_handler const&, boost::function0<void> const&>::invoke(boost::detail::function::function_buffer&, boost::python::detail::exception_handler const&, boost::function0<void> const&) (function_template.hpp:137)
==226638==
==226638== Invalid read of size 8
==226638==    at 0x67A0C0D: std::_Rb_tree_increment(std::_Rb_tree_node_base*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30)
==226638==    by 0x57F0D37: operator++ (stl_tree.h:287)
==226638==    by 0x57F0D37: next<std::map<std::__cxx11::basic_string<char>, ledger::account_t*>, mpl_::bool_<false> > (foreach.hpp:767)
==226638==    by 0x57F0D37: ledger::account_t::clear_xdata() (account.cc:608)
==226638==    by 0x58DFAF1: ~collector_wrapper (py_journal.cc:164)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:36)
==226638==    by 0x58DFAF1: checked_delete<ledger::(anonymous namespace)::collector_wrapper> (checked_delete.hpp:31)
==226638==    by 0x58DFAF1: boost::detail::sp_counted_impl_p<ledger::(anonymous namespace)::collector_wrapper>::dispose() (sp_counted_impl.hpp:89)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:120)
==226638==    by 0x58DC50C: UnknownInlinedFun (sp_counted_base_gcc_atomic.hpp:116)
==226638==    by 0x58DC50C: ~shared_count (shared_count.hpp:432)
==226638==    by 0x58DC50C: ~shared_ptr (shared_ptr.hpp:335)
==226638==    by 0x58DC50C: boost::python::objects::pointer_holder<boost::shared_ptr<ledger::(anonymous namespace)::collector_wrapper>, ledger::(anonymous namespace)::collector_wrapper>::~pointer_holder() (pointer_holder.hpp:51)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x58E180C: UnknownInlinedFun (object.h:500)
==226638==    by 0x58E180C: ~object_base (object_core.hpp:423)
==226638==    by 0x58E180C: ~object (object_core.hpp:238)
==226638==    by 0x58E180C: ~iterator_range (iterator.hpp:41)
==226638==    by 0x58E180C: boost::python::objects::value_holder<boost::python::objects::iterator_range<boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, __gnu_cxx::__normal_iterator<ledger::post_t**, std::vector<ledger::post_t*, std::allocator<ledger::post_t*> > > > >::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==  Address 0x4ebe318 is 24 bytes inside a block of size 72 free'd
==226638==    at 0x484671B: operator delete(void*) (vg_replace_malloc.c:923)
==226638==    by 0x57F4D47: deallocate (new_allocator.h:158)
==226638==    by 0x57F4D47: deallocate (alloc_traits.h:496)
==226638==    by 0x57F4D47: _M_put_node (stl_tree.h:565)
==226638==    by 0x57F4D47: _M_drop_node (stl_tree.h:632)
==226638==    by 0x57F4D47: _M_erase (stl_tree.h:1937)
==226638==    by 0x57F4D47: ~_Rb_tree (stl_tree.h:984)
==226638==    by 0x57F4D47: ~map (stl_map.h:312)
==226638==    by 0x57F4D47: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57F4DE8: ledger::account_t::~account_t() (account.cc:50)
==226638==    by 0x57EB5B2: checked_delete<ledger::account_t> (checked_delete.hpp:36)
==226638==    by 0x57EB5B2: ledger::journal_t::~journal_t() (journal.cc:82)
==226638==    by 0x57BA7C1: operator() (unique_ptr.h:95)
==226638==    by 0x57BA7C1: ~unique_ptr (unique_ptr.h:396)
==226638==    by 0x57BA7C1: ledger::session_t::~session_t() (session.h:80)
==226638==    by 0x58FC52B: boost::python::objects::value_holder<ledger::session_t>::~value_holder() (value_holder.hpp:39)
==226638==    by 0x5EEDA4E: instance_dealloc (class.cpp:335)
==226638==    by 0x2A1C75: subtype_dealloc.lto_priv.0 (typeobject.c:1460)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:500)
==226638==    by 0x5EF54A4: UnknownInlinedFun (object.h:567)
==226638==    by 0x5EF54A4: life_support_call (life_support.cpp:30)
==226638==    by 0x28401A: _PyObject_MakeTpCall (call.c:215)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:112)
==226638==    by 0x2A5D82: UnknownInlinedFun (abstract.h:184)
==226638==    by 0x2A5D82: handle_callback.lto_priv.0 (weakrefobject.c:952)
==226638==    by 0x2A25E0: PyObject_ClearWeakRefs (weakrefobject.c:998)
==226638==  Block was alloc'd at
==226638==    at 0x4843F2F: operator new(unsigned long) (vg_replace_malloc.c:422)
==226638==    by 0x57E1F6A: allocate (new_allocator.h:137)
==226638==    by 0x57E1F6A: allocate (alloc_traits.h:464)
==226638==    by 0x57E1F6A: _M_get_node (stl_tree.h:561)
==226638==    by 0x57E1F6A: _M_create_node<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, ledger::account_t*> > (stl_tree.h:611)
==226638==    by 0x57E1F6A: operator()<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > (stl_tree.h:529)
==226638==    by 0x57E1F6A: _M_insert_<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char> >, std::allocator<std::pair<const std::__cxx11::basic_string<char>, ledger::account_t*> > >::_Alloc_node> (stl_tree.h:1830)
==226638==    by 0x57E1F6A: std::pair<std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, bool> std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> > >::_M_insert_unique<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*> >(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ledger::account_t*>&&) (stl_tree.h:2175)
==226638==    by 0x57EF853: insert (stl_map.h:841)
==226638==    by 0x57EF853: ledger::account_t::find_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) (account.cc:95)
==226638==    by 0x57EC00F: ledger::journal_t::register_account(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ledger::post_t*, ledger::account_t*) (journal.cc:128)
==226638==    by 0x57D615C: ledger::(anonymous namespace)::instance_t::parse_post(char*, long, ledger::account_t*, ledger::xact_t*, bool) (textual.cc:1480)
==226638==    by 0x57DF209: parse_xact (textual.cc:1941)
==226638==    by 0x57DF209: xact_directive (textual.cc:707)
==226638==    by 0x57DF209: ledger::(anonymous namespace)::instance_t::read_next_directive(bool&) (textual.cc:381)
==226638==    by 0x57E02DA: ledger::(anonymous namespace)::instance_t::parse() (textual.cc:252)
==226638==    by 0x57E06EB: ledger::journal_t::read_textual(ledger::parse_context_stack_t&) (textual.cc:2004)
==226638==    by 0x57EA3FA: ledger::journal_t::read(ledger::parse_context_stack_t&) (journal.cc:472)
==226638==    by 0x57B3C17: ledger::session_t::read_journal_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (session.cc:233)
==226638==    by 0x58FBEB9: invoke<boost::python::to_python_indirect<ledger::journal_t*, boost::python::detail::make_reference_holder>, ledger::journal_t* (ledger::session_t::*)(const std::__cxx11::basic_string<char>&), boost::python::arg_from_python<ledger::session_t&>, boost::python::arg_from_python<const std::__cxx11::basic_string<char>&> > (invoke.hpp:86)
==226638==    by 0x58FBEB9: operator() (caller.hpp:233)
==226638==    by 0x58FBEB9: boost::python::objects::caller_py_function_impl<boost::python::detail::caller<ledger::journal_t* (ledger::session_t::*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), boost::python::return_internal_reference<1ul, boost::python::default_call_policies>, boost::mpl::vector3<ledger::journal_t*, ledger::session_t&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&> > >::operator()(_object*, _object*) (py_function.hpp:38)
==226638==    by 0x5EF145C: operator() (py_function.hpp:147)
==226638==    by 0x5EF145C: boost::python::objects::function::call(_object*, _object*) const (function.cpp:221)
==226638==
==226638==
==226638== HEAP SUMMARY:
==226638==     in use at exit: 843,774 bytes in 1,713 blocks
==226638==   total heap usage: 3,833 allocs, 2,120 frees, 3,051,718 bytes allocated
==226638==
==226638== LEAK SUMMARY:
==226638==    definitely lost: 0 bytes in 0 blocks
==226638==    indirectly lost: 0 bytes in 0 blocks
==226638==      possibly lost: 0 bytes in 0 blocks
==226638==    still reachable: 843,774 bytes in 1,713 blocks
==226638==                       of which reachable via heuristic:
==226638==                         newarray           : 64 bytes in 4 blocks
==226638==         suppressed: 0 bytes in 0 blocks
==226638== Rerun with --leak-check=full to see details of leaked memory
==226638==
==226638== For lists of detected and suppressed errors, rerun with: -s
==226638== ERROR SUMMARY: 34 errors from 25 contexts (suppressed: 0 from 0)

#1024389#32
Date:
2022-12-09 18:53:16 UTC
From:
To:
Dear Maintainer,
this SIGSEGV and also the valgrind "invalid read"
below ledger::journal_t::clear_xdata can also be
seen in a Debian 11 Bullseye VM.

Because valgrind points already to a use-after-free,
and the output "Done." is printed,
might the issue here be, that python does destruct the
"session" variable before the "journal" while it is
still kind of connected at C++ side?
And therefore maybe an upstream issue?

Kind regards,
Bernhard