• Michael Stahl's avatar
    basegfx: remove global IdentityMatrix thread safety hazard · cf382b6c
    Michael Stahl yazdı
    ASAN reports this about JunitTest_chart2_unoapi
    
    ==27381==ERROR: AddressSanitizer: heap-use-after-free on address 0x6060005bd218 at pc 0x7ff229755271 bp 0x7fffb52c6c30 sp 0x7fffb52c6c28
    READ of size 8 at 0x6060005bd218 thread T0
        #0 0x7ff229755270 in o3tl::UnsafeRefCountingPolicy::decrementCount(unsigned long&) include/o3tl/cow_wrapper.hxx:41:68
        #1 0x7ff2297551bf in o3tl::cow_wrapper<basegfx::Impl2DHomMatrix, o3tl::UnsafeRefCountingPolicy>::release() include/o3tl/cow_wrapper.hxx:203:29
        #2 0x7ff2297515f0 in o3tl::cow_wrapper<basegfx::Impl2DHomMatrix, o3tl::UnsafeRefCountingPolicy>::~cow_wrapper() include/o3tl/cow_wrapper.hxx:248:13
        #3 0x7ff242ef440f in __run_exit_handlers (/lib64/libc.so.6+0x3a40f)
        #4 0x7ff242ef4469 in __GI_exit (/lib64/libc.so.6+0x3a469)
    
    The reason appears to be the UnsafeRefCountingPolicy on the global
    IdentityMatrix, so every B2DHomMatrix that is created on any thread
    will manipulate the refcount of that global without synchronisation.
    
    Let's just remove the global and hope the extra allocations don't matter.
    
    Change-Id: I4962ab2e622286f29b912a57448f3f1a53eeb592
    cf382b6c
Adı
Son kayıt (commit)
Son güncelleme
..
inc/pch Loading commit data...
qa Loading commit data...
source Loading commit data...
test Loading commit data...
CppunitTest_basegfx.mk Loading commit data...
Library_basegfx.mk Loading commit data...
Makefile Loading commit data...
Module_basegfx.mk Loading commit data...
README Loading commit data...