internal: make nondestructible global static_parser 90/198090/3 accepted/tizen/unified/20190128.061341 submit/tizen/20190121.031835
authorAdrian Szyndela <adrian.s@samsung.com>
Fri, 18 Jan 2019 11:36:18 +0000 (12:36 +0100)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Mon, 21 Jan 2019 03:13:40 +0000 (12:13 +0900)
commit96e88c43df1394824e0ffa3d2d19477359190449
tree29f44548c0a77fe26b81b10b3ab479abb1577dd3
parenta791590b5fa2452c66508f301bb8452aff79fe58
internal: make nondestructible global static_parser

This should help with destructing global variable
while using it in other thread.

Multi-threaded daemons often kill the main thread before killing the other threads.
This patch prevents instance memory release when the main thread exits.
, and thus required to avoid crash on released memory.

.#0  ldp_xml_parser::ItemBuilder::~ItemBuilder (this=0xb67a980c <ldp_xml_parser::static_parser>, __in_chrg=<optimized out>) at src/internal/policy.cpp:510
.#1  0xb67a5de8 in ldp_xml_parser::XmlParser::~XmlParser (this=0xb67a980c <ldp_xml_parser::static_parser>, __in_chrg=<optimized out>) at /usr/lib/gcc/armv7l-tizen-linux-gnueabi/6.2.1/include/c++/ext/new_allocator.h:110
.#2  0xb695806c in __cxa_finalize (d=0xb67a9438) at cxa_finalize.c:83
.#3  0xb679bcea in __do_global_dtors_aux () from /lib/libdbuspolicy1.so.1
.#4  0xb6fdfa1c in _dl_fini () at dl-fini.c:235
.#5  0xb6957a44 in __run_exit_handlers (status=<optimized out>, listp=<optimized out>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:106
.#6  0xb6957b6c in __GI_exit (status=<optimized out>) at exit.c:137
.#7  0xb6940640 in __libc_start_main (main=0xbefffe44, argc=-1230635008, argv=0xb6940640 <__libc_start_main+280>, init=<optimized out>, fini=0x7f55f69c <__libc_csu_fini>, rtld_fini=0xb6fdf7e4 <_dl_fini>, stack_end=0xbefffe44)
.    at libc-start.c:323
.#8  0x7f5589e0 in _start () at ../sysdeps/arm/start.S:110

Change-Id: I0cc0a2623eee688b0498fccacb8a2bc219fd3a94
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
src/internal/global_nodestruct.hpp [new file with mode: 0644]
src/internal/internal.cpp
src/internal/naive_policy_checker.hpp
src/internal/xml_parser.cpp
src/internal/xml_parser.hpp