Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000589LuxRenderCorepublic2009-10-19 02:352009-12-22 01:49
ReporterDade 
Assigned ToDade 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version0.6 
Target VersionFixed in Version0.6.1 
Summary0000589: Rendering a test related to ies lighting leads to a crash
DescriptionPinko reported this bug. After few seconds of rendering of the attached scene, Luxrender crashes.
TagsNo tags attached.
Mercurial Changeset #
Requires Documentation UpdateNo
Requires Exporter Update
Attached Filesrar file icon Scena+IES.rar [^] (53,036 bytes) 2009-10-19 02:36

- Relationships

-  Notes
(0001623)
Dade (developer)
2009-10-19 02:37

Backtrace of the crash:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f6061403950 (LWP 2048)]
0x0000000000838333 in lux::SampleableSphericalFunction::Sample_f ()
Current language: auto; currently asm
(gdb) backtrace
#0 0x0000000000838333 in lux::SampleableSphericalFunction::Sample_f ()
0000001 0x000000000082f93d in lux::PointLight::Sample_L ()
0000002 0x00000000007bb137 in lux::BidirIntegrator::Li ()
0000003 0x000000000073523a in lux::RenderThread::render ()
0000004 0x00007f607256cf6f in thread_proxy () from /usr/lib/libboost_thread-mt.so.1.37.0
0000005 0x00007f60707213ba in start_thread () from /lib/libpthread.so.0
0000006 0x00007f607048dfcd in clone () from /lib/libc.so.6
0000007 0x0000000000000000 in ?? ()
(gdb)
(0001624)
Dade (developer)
2009-10-19 04:16

Detailed stack trace:

(gdb) backtrace
#0 0x00000000008a1b47 in lux::Distribution1D::Sample (this=0x4040acc63f141206, u=0.246450305, pdf=0x7f6722978714)
    at /home/david/projects/luxrender-dev/lux-v0.6.x-debug/core/mcdistribution.h:116
0000001 0x00000000008ac869 in lux::SampleableSphericalFunction::Sample_f (this=0x26384f0, u1=0.99999994, u2=0.246450305, w=0x7f6722978990, pdf=0x7f6722978d70)
    at /home/david/projects/luxrender-dev/lux-v0.6.x-debug/lights/sphericalfunction/sphericalfunction.cpp:98
0000002 0x00000000008a2eea in lux::PointLight::Sample_L (this=0x26666e0, tspack=0x2684850, scene=0x26675f0, u1=0.99999994, u2=0.246450305, u3=0.958582163,
    bsdf=0x7f6722978cf8, pdf=0x7f6722978d70, Le=0x7f6722978c90) at /home/david/projects/luxrender-dev/lux-v0.6.x-debug/lights/point.cpp:108
0000003 0x00000000008405db in lux::BidirIntegrator::Li (this=0x2667cf0, tspack=0x2684850, scene=0x26675f0, sample=0x2684140)
    at /home/david/projects/luxrender-dev/lux-v0.6.x-debug/integrators/bidirectional.cpp:728
0000004 0x00000000007b90e5 in lux::RenderThread::render (myThread=0x263ca40) at /home/david/projects/luxrender-dev/lux-v0.6.x-debug/core/scene.cpp:343
0000005 0x00000000007ba1b1 in boost::_bi::list1<boost::_bi::value<lux::RenderThread*> >::operator()<void (*)(lux::RenderThread*), boost::_bi::list0> (
    this=0x2684aa0, f=@0x2684a98, a=@0x7f67229790af) at /usr/include/boost/bind.hpp:232
0000006 0x00000000007ba1ee in boost::_bi::bind_t<void, void (*)(lux::RenderThread*), boost::_bi::list1<boost::_bi::value<lux::RenderThread*> > >::operator() (
    this=0x2684a98) at /usr/include/boost/bind/bind_template.hpp:20
0000007 0x00000000007ba20c in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(lux::RenderThread*), boost::_bi::list1<boost::_bi::value<lux::RenderThread*> > > >::run (this=0x2684990) at /usr/include/boost/thread/detail/thread.hpp:56
0000008 0x00007f6727648f6f in thread_proxy () from /usr/lib/libboost_thread-mt.so.1.37.0
0000009 0x00007f672817c3ba in start_thread () from /lib/libpthread.so.0
0000010 0x00007f6725785fcd in clone () from /lib/libc.so.6
0000011 0x0000000000000000 in ?? ()
(0001625)
Dade (developer)
2009-10-19 04:33

The problem is here:

RGBColor SampleableSphericalFunction::Sample_f(float u1, float u2, Vector *w, float *pdf) const {
        // Find floating-point $(u,v)$ sample coordinates
        float pdfs[2];
        float fu = uDistrib->Sample(u1, &pdfs[0]);
        int u = Float2Int(fu);
        float fv = vDistribs[u]->Sample(u2, &pdfs[1]);

for u1=0.0, fu = NaN, u = wired value => memory fault
(0001626)
Dade (developer)
2009-10-19 05:12

The problem was in Distribution1D::Sample:

float Sample(float u, float *pdf) const {
    // Find surrounding cdf segments
    float *ptr = std::lower_bound(cdf, cdf+count+1, u);
    int offset = (int) (ptr-cdf-1);
    // Return offset along current cdf segment
    u = (u - cdf[offset]) / (cdf[offset+1] - cdf[offset]);
    *pdf = func[offset] * invFuncInt;
    return offset + u;
}

for u=0.0, ptr = cdf and offset = -1

"int offset = max(0, (int)(ptr-cdf-1));" has fixed the problem (as has been fixed in PBRT 2.0).

- Issue History
Date Modified Username Field Change
2009-10-19 02:35 Dade New Issue
2009-10-19 02:36 Dade File Added: Scena+IES.rar
2009-10-19 02:36 Dade Status new => assigned
2009-10-19 02:36 Dade Assigned To => Dade
2009-10-19 02:37 Dade Note Added: 0001623
2009-10-19 04:16 Dade Note Added: 0001624
2009-10-19 04:33 Dade Note Added: 0001625
2009-10-19 05:12 Dade Note Added: 0001626
2009-10-19 05:27 Dade Status assigned => feedback
2009-10-22 06:13 Dade Description Updated
2009-10-27 05:17 Dade Requires Documentation Update => No
2009-10-27 05:17 Dade Requires LuxBlend Implementation => No
2009-10-27 05:17 Dade Requires LuxMaya Implementation => No
2009-10-27 05:17 Dade Requires LuXSI Implementation => No
2009-10-27 05:17 Dade Status feedback => resolved
2009-10-27 05:17 Dade Fixed in Version => 0.7
2009-10-27 05:17 Dade Resolution open => fixed
2009-11-02 07:24 Dade Status resolved => feedback
2009-11-02 07:24 Dade Resolution fixed => reopened
2009-11-02 07:25 Dade Status feedback => closed
2009-11-02 07:25 Dade Resolution reopened => fixed
2009-11-02 07:25 Dade Fixed in Version 0.7 => 0.6.1
2009-11-02 07:26 Dade Status closed => resolved
2009-12-22 01:49 jeanphi Status resolved => closed


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker