From: Chris F. <cd...@fo...> - 2011-07-23 06:21:46
|
Hi folks, I did a test run on opensync tonight, using my git repo, and for the first time to my memory, in all my experience with opensync, all the tests pass for me. Please let me know if you have different results. It's been a long week of valgrind work, and repairing and debugging tests, but I'm pretty happy that I'm at this point already. This is not to say that all the tests are themselves accurate. I haven't gone through them and analyzed the logic. I just wanted the existing code to run and pass. Hopefully from now on, we can keep opensync in this good shape. And improve it. There are more corner cases, I'm sure, that valgrind can catch. The repo is here, with 65 commits over the past week and a half: http://repo.or.cz/w/opensync/opensync-cdf.git So far, all my tests have been with file-sync and mock-sync. Next on the agenda is to slowly work through the binary-meta tree, and test those plugins with valgrind as well. Hopefully opensync will become bulletproof soon. :-) Enjoy, - Chris git shortlog: Chris Frey (62): Minor code cleanup: use local variable instead of pointer again Added clarifying comments Merge remote branch 'luizluca/fix-memoryleak-serializer' Added explanatory comments for bit count totals in OSyncObjEngine Replaced bit twiddling code with simpler equivalents Fixed access of freed memory in osync_obj_engine_command() Fixed caps_converters and mergers memory leaks when freeing FormatEnv lists Fixed memory leak in osync_demarshal_objformatsink()'s error handling logic Fixed hairy OSyncList-based memory leak in osync_engine_initialize() Added note on debugging memory issues with valgrind doc: Added bird's eye view of the capabilities structure hierarchy Minor pointer initialization fix, and comment formatting Removed unused osync_capability_free() prototype Minor reorg of opensync_capability_private.h, and typo fix Comment typo No need to call a function to access internal struct value Fixed some of osync_capabilities_objtype_unref()'s cleanup logic Commented out unused prototype Added internal OSyncCapabilityParameter new/ref/unref API Changed capability list add behaviour API: changed osync_capability_new() API API: documented osync_capability_new_child() and _add_child() Added clarification comment to osync_capability_new_child() Added implementation for osync_capability_unref() API: changed osync_capabilities_objtype_new() to behave like _new() Updated osync_capabilities_objtype_parse doxygen comments Cleaned up osync_capabilities_unref() API: changed capability-related _parse() and _parse_and_add() functions API: reorganized capabilities API to be more consistent and clear leak: fixed two leaks in osync_member_support_targetformat() memory: fixed potential invalid memory access in error case of osync_demarshal_pluginconfig() leak: fixed invalid use of osync_free(), should have used osync_plugin_config_unref() leak: fixed leak in osync_message_new() in the error case leak: fixed ref logic error in _osync_queue_generate_error() Added proper child support to OSyncError Fixed trace logging in new capabilities functions Fixed typo in osync_engine_get_cmdstr() Fixed logic of unidirectional write optimization in osync_obj_engine_command() leak: fixed osync_list_free() bug in _inject_changelog_entries leak: fixed missing calls to osync_db_free_list() doc: added What is the difference between _private.h and _internal.h headers? Changed engine's busy flag to volatile leak: fixed leaks in the xmlformat and xmlfield API doc: clarified freeing responsibility for osync_format_env_find_path_with_detectors() leak: fixed extremely tricky set of leaks in osync_format_env_find_path_fn() leak: fixed potential leaks in the error path of osync_demarshal_change() leak: fixed leaked change object in _osync_client_handle_read_change() leak: fixed leaked change and data objects in _inject_changelog_entries() leak: fixed leak in osync_archive_get_mixed_objengines() leak: fixed leak and logic error in _osync_client_proxy_fin_handler() leak: fixed leak in osync_queue_disconnect(), and tightened up locking API: osync_xmlformat_assemble() now returns osync_strdup() buffer doc: clarify how osync_xmlformat_assemble() buffer should be freed Fixed path name bug in test data test: added workaround for the empty directory problem with git Fixed comment typo test: beefed up error checking for system() calls Fixed unref on pointer before checking if valid (oops) Added basic error logging in osync_member_support_targetformat() leak: fixed ref leak in mock_initialize Added OSYNC_ERROR_MAX error type, for error type range checking Added error type range check in osync_demarshal_error(), and log if out of range Luiz Angelo Daros de Luca (3): - formatting stuff - Fix memoryleak. objformat is duplicated and must be freed. - Fix memory leak when some error occurs in osync_demarshal_objtype_sink - Fix memory leak in osync_demarshal_objtype_sinks as it never unrefs sinks |