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
29 Apr 2024 13:38:13 EDT (-0400)
  Re: Probable thread safety issue in functions using splines. 3.7.0.RC7.  
From: Le Forgeron
Date: 3 Jun 2013 17:51:41
Message: <51ad0fed$1@news.povray.org>
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.


Post a reply to this message

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