POV-Ray : Newsgroups : povray.bugreports : Probable thread safety issue in functions using splines. 3.7.0.RC7. : Re: Probable thread safety issue in functions using splines. 3.7.0.RC7. Server Time
25 Apr 2024 15:43:20 EDT (-0400)
  Re: Probable thread safety issue in functions using splines. 3.7.0.RC7.  
From: William F Pokorny
Date: 4 Jun 2013 06:57:37
Message: <51adc821@news.povray.org>
On 06/03/2013 05:51 PM, Le_Forgeron wrote:
> Le 03/06/2013 12:54, William F Pokorny nous fit lire :
>> Hi,
>> I believe I've hit a thread safety issue. Could someone confirm? Running
>> Ubuntu 12.1. I'll also post images to p.b.images.
>>
>> Thanks for your time.
>> Bill P.
>>
>>
>> SplineThreadSafety.pov
>>
>>
>>
//----------------------------------------------------------------------------------------------------
>> // Scene to show thread safet issue with splines - or maybe functions using
splines.
>> //
>> // On a multi-core machine, without AA, run this command to see the problem (8
cores < 60 seconds) :
>> //
>
> that might be less than 60 seconds, but with Intel Inspector (XE 2013),
> it becomes 42:50 (just 14 data races, oh well, that's just so friendly).
>
> ID  Type Sources Modules State
> P1  Data race isosurf.cpp; mutex.hpp povray New
> P2  Data race mutex.hpp; povms.cpp povray New
> P3  Data race povray.cpp povray New
> P4  Data race povray.cpp povray New
> P5  Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
> P6  Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
> P7  Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
> P8  Data race recursive_mutex.hpp; scene.cpp; task.cpp; taskqueue.cpp;
> view.cpp povray New
> P9  Data race condition_variable.hpp; vfe.cpp; vfesession.cpp povray New
> P10  Data race condition_variable.hpp; unixconsole.cpp; vfesession.cpp
> povray New
> P11  Data race condition_variable.hpp; unixconsole.cpp; vfesession.cpp
> povray New
> P12  Data race unixconsole.cpp; vfesession.cpp; vfesession.h povray New
> P13  Data race unixconsole.cpp; vfesession.cpp povray New
> P14  Data race [Unknown]; unixconsole.cpp; vfesession.cpp
> libboost_thread.so.1.49.0; povray New
>
> Numbers 2, 3, 4, 8, 9, 10, 11, 12, 13 & 14 are related to the handling
> of session (and occur once or twice only, excepted #8, four times).
>
> Number 1 is about isosurface (adjusting gradient at isosurf.cpp:1099 vs
> 1098 (testing its value), and copying the isosurface) (IMHO, rendering
> threads updating the object... not the best move without some
> atomic/protection (and not sure a DBL is/can be atomic)) (occurs 2505
> times).
>
> Number 5, 6 and 7 are about splines
> * sp->Cache_Type & Cache_Point, splines.cpp :803 vs :814/815 (2024 times)
> * sp->Cache_Valid, :805 vs :813 vs :904 (1770 times)
> * sp->Cache_Data, :807 vs :903 (5025 times)
>
> Only my 0.02¢ (yes, very cheap), but it seems to confirm.
>

Thanks everyone for the confirmation, the code tips - and the cents ;-). 
The Intel Inspector tool is news to me. I'm actually impressed at how 
"quickly" it ran what must of been heavily instrumented code.

I'll make my first run at opening an official bug report after work 
tonight.

Bill P.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.