[ 
https://issues.apache.org/jira/browse/CELIX-334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bjoern Petri closed CELIX-334.
------------------------------
    Resolution: Fixed

> Race Condition in Topology Manager causes spurious segfaults
> ------------------------------------------------------------
>
>                 Key: CELIX-334
>                 URL: https://issues.apache.org/jira/browse/CELIX-334
>             Project: Celix
>          Issue Type: Bug
>            Reporter: Bjoern Petri
>            Assignee: Bjoern Petri
>
> When adding imported/exported Services, the Topology Manager creates a copy 
> of the rsaList. Although a comment mentioned that this is done to prevent 
> threading issues, this is causing a race condition btwn topology manager and 
> the remote service admin:
> {code}
> =================================================================
> ==6392== ERROR: AddressSanitizer: heap-use-after-free on address 
> 0x601c00009fe8 at pc 0x2ab837b9c59a bp 0x2ab8370384d0 sp 0x2ab8370384c8
> READ of size 8 at 0x601c00009fe8 thread T72
>     #0 0x2ab837b9c599 in remoteServiceAdmin_importService 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c:825:0
>     #1 0x2ab8396f5a61 in topologyManager_addImportedService 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/topology_manager/private/src/topology_manager.c:549:0
>     #2 0x2ab837ffead3 in discovery_informEndpointListeners 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery/private/src/discovery.c:173:0
>     #3 0x2ab837fff0d0 in discovery_addDiscoveredEndpoint 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery/private/src/discovery.c:209:0
>     #4 0x2ab838006cf5 in endpointDiscoveryPoller_poll 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery/private/src/endpoint_discovery_poller.c:271:0
>     #5 0x2ab838005fca in endpointDiscoveryPoller_addDiscoveryEndpoint 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery/private/src/endpoint_discovery_poller.c:193:0
>     #6 0x2ab837ff9c69 in discoveryShmWatcher_syncEndpoints 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery_shm/private/src/discovery_shmWatcher.c:119:0
>     #7 0x2ab837ffa554 in discoveryShmWatcher_run 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery_shm/private/src/discovery_shmWatcher.c:168:0
>     #8 0x2ab82af4db97 in __asan_describe_address ??:?
>     #9 0x2ab82e42f181 in start_thread 
> /build/buildd/eglibc-2.19/nptl/pthread_create.c:312 (discriminator 2)
>     #10 0x2ab82ef5f47c in clone 
> /build/buildd/eglibc-2.19/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:111
> 0x601c00009fe8 is located 104 bytes inside of 152-byte region 
> [0x601c00009f80,0x601c0000a018)
> freed by thread T0 here:
>     #0 0x2ab82af4a33a in __interceptor_free ??:?
>     #1 0x2ab837b9339d in remoteServiceAdmin_destroy 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c:101:0
>     #2 0x2ab837b9dff2 in bundleActivator_stop 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/src/remote_service_admin_activator.c:107:0
>     #3 0x2ab82df1526c in fw_stopBundle 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/framework.c:875:0
>     #4 0x2ab82def33d4 in bundle_stopWithOptions 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/bundle.c:325:0
>     #5 0x2ab82def3166 in bundle_stop 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/bundle.c:313:0
>     #6 0x41b2b3 in stopStartPermutation 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:250:0
>     #7 0x41e3c6 in testImport 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:338:0
>     #8 0x422e4e in 
> _ZN44TEST_RsaShmClientServerTests_TestImport_Test8testBodyEv 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:479:0
>     #9 0x42fe00 in PlatformSpecificSetJmpImplementation 
> /home/bjoern/Progs/cpputest/cpputest-3.7.1/src/Platforms/Gcc/UtestPlatform.cpp:144:0
> addr2line: '': No such file
>     #10 0x601000007f9f in
> previously allocated by thread T0 here:
>     #0 0x2ab82af4a4e5 in calloc ??:?
>     #1 0x2ab837b929db in remoteServiceAdmin_create 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c:70
>     #2 0x2ab837b9d9f2 in bundleActivator_start 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/src/remote_service_admin_activator.c:63
>     #3 0x2ab82df1317f in fw_startBundle 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/framework.c:717
>  (discriminator 1)
>     #4 0x2ab82def2cd2 in bundle_startWithOptions 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/bundle.c:282
>     #5 0x2ab82df63556 in celixLauncher_launchWithProperties 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:130
>  (discriminator 2)
>     #6 0x2ab82df62b2b in celixLauncher_launchWithStream 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:67
>     #7 0x2ab82df62844 in celixLauncher_launch 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:46
>     #8 0x4144ee in setupFm 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:68
>     #9 0x42360e in 
> _ZN47TEST_GROUP_CppUTestGroupRsaShmClientServerTests5setupEv 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:465
>     #10 0x42fe00 in PlatformSpecificSetJmpImplementation 
> /home/bjoern/Progs/cpputest/cpputest-3.7.1/src/Platforms/Gcc/UtestPlatform.cpp:144
>     #11 0x601000007f9f in
> Thread T72 created by T0 here:
>     #0 0x2ab82af3fb5b in __interceptor_pthread_create ??:?
>     #1 0x2ab82e1fdca8 in celixThread_create 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/utils/private/src/celix_threads.c:34
>     #2 0x2ab837ffaaed in discoveryShmWatcher_create 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery_shm/private/src/discovery_shmWatcher.c:212
>     #3 0x2ab837ffba80 in discovery_start 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery_shm/private/src/discovery_impl.c:122
>     #4 0x2ab837ffcc18 in bundleActivator_start 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/discovery/private/src/discovery_activator.c:125
>     #5 0x2ab82df1317f in fw_startBundle 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/framework.c:717
>  (discriminator 1)
>     #6 0x2ab82def2cd2 in bundle_startWithOptions 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/bundle.c:282
>     #7 0x2ab82df63556 in celixLauncher_launchWithProperties 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:130
>  (discriminator 2)
>     #8 0x2ab82df62b2b in celixLauncher_launchWithStream 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:67
>     #9 0x2ab82df62844 in celixLauncher_launch 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/framework/private/src/celix_launcher.c:46
>     #10 0x4144ee in setupFm 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:68
>     #11 0x42360e in 
> _ZN47TEST_GROUP_CppUTestGroupRsaShmClientServerTests5setupEv 
> /home/bjoern/Development/celix/git/celix.current.plain/celix/remote_services/remote_service_admin_shm/private/test/rsa_client_server_tests.cpp:465
>     #12 0x42fe00 in PlatformSpecificSetJmpImplementation 
> /home/bjoern/Progs/cpputest/cpputest-3.7.1/src/Platforms/Gcc/UtestPlatform.cpp:144
>     #13 0x601000007f9f in
> Shadow bytes around the buggy address:
>   0x0c03ffff93a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c03ffff93b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c03ffff93c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c03ffff93d0: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c03ffff93e0: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
> =>0x0c03ffff93f0: fd fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd fd
>   0x0c03ffff9400: fd fd fd fa fa fa fa fa fa fa fa fa 00 00 00 00
>   0x0c03ffff9410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa
>   0x0c03ffff9420: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
>   0x0c03ffff9430: fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa fa
>   0x0c03ffff9440: fa fa fa fa fd fd fd fd fd fd fd fd fd fd fd fd
> Shadow byte legend (one shadow byte represents 8 application bytes):
>   Addressable:           00
>   Partially addressable: 01 02 03 04 05 06 07
>   Heap left redzone:     fa
>   Heap righ redzone:     fb
>   Freed Heap region:     fd
>   Stack left redzone:    f1
>   Stack mid redzone:     f2
>   Stack right redzone:   f3
>   Stack partial redzone: f4
>   Stack after return:    f5
>   Stack use after scope: f8
>   Global redzone:        f9
>   Global init order:     f6
>   Poisoned by user:      f7
>   ASan internal:         fe
> ==6392== ABORTING
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to