Comments (5)
Yes, confirmed.
It looks like the only real solution is to introduce a libplist_init|deinit() due to libxml2's API design as without the cleanup memory will leak.
from libplist.
See also #57
from libplist.
Following up on my suggestion with a protecting mutex I didn't take into account that it isn't really solving the problem. @FunkyM you are right with init/deinit. I will take care of that.
from libplist.
Aha, this is causing libimobiledevice/ideviceinstaller#41.
Simply dropping this section would probably be alright. In a multi-threaded environment, libxml recommends either calling xmlCleanupParser once before program exit or simply not calling it at all. See: "In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind". Even though you may get a leak report from valgrind, I don't see it as a genuine leak. Yes, some global state may hang around for longer than necessary, but I don't think there's some continued accumulation of that memory over time.
If you do add something, I think you only need a deinit, as the lazy init is taken care of for you by libxml.
from libplist.
I accepted the pull request #73 for now to work around this problem.
from libplist.
Related Issues (20)
- Static building multiple undefined reference errors (since 91c0aa8) HOT 2
- Error while loading shared libraries HOT 2
- About the conversion of plist and Objective-C object HOT 3
- Assertion failed: ((node->children->count % 2) == 0), function node_to_xml, file xplist.c, line 365. HOT 1
- `make check -j16` fails due to .out file collisions HOT 3
- Failed to build
- ERROR: Input file is too small to contain valid plist data. HOT 1
- Cython crash when referencing objects after free() is called
- OOB access in `plist_from_memory` HOT 3
- Debian/Ubuntu `libplist-dev` package is outdated HOT 1
- Linker error: ld: archive member '/' not a mach-o file when trying to link libcnary.a HOT 1
- m4/ax_python_devel.m4 is outdated and fails with python 3.12 due to no longer present distutils
- Mistaken issue submission
- Cannot find python in your system PATH
- No autogen.sh in release file HOT 8
- FromBin parse bplist failed!
- ERROR: Input plist data is not compatible with output format.
- [Bug] plistutil cannot read from stdin - ERROR: Could not parse plist data (-3)
- About SIGSEGV (Address boundary error) when using C++ PList::Array
- I found a SEGV on unknown address crash by using AFL++
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libplist.