Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows: PBO error when rendering #138

Closed
eile opened this issue Jul 6, 2012 · 9 comments
Closed

Windows: PBO error when rendering #138

eile opened this issue Jul 6, 2012 · 9 comments
Assignees
Labels
Milestone

Comments

@eile
Copy link
Member

eile commented Jul 6, 2012

The new async readbacks produce a PBO error in the finish download call. The map buffer returns 0 even though no GL error is set and the code looks correct.

Happens only with Windows drivers, and has been reported by @dulley and R. Hauck.

@eile
Copy link
Member Author

eile commented Jul 9, 2012

Was not fixed by #118

eile added a commit that referenced this issue Jul 16, 2012
eile added a commit that referenced this issue Jul 16, 2012
eile added a commit that referenced this issue Jul 16, 2012
@eile
Copy link
Member Author

eile commented Jul 27, 2012

Since the 1.4 branch has a workaround, move target to 1.6

@tribal-tec
Copy link
Member

According to the log, the transfer window creation causes some error beforehand.

6544 PipeTfer1 ..........\src\Equalizer\libs\eq\client\wgl\window.cpp:828 23918 Context sharing failed: Die angeford
erte Ressource wird bereits verwendet. (170)

17: lunchbox::backtrace - 0x63d56c00
16: std::basic_ostream<char,std::char_traits<char> >::operator<< - 0x61579f60
15: eq::wgl::Window::createWGLContext - 0x5af8de20
14: eq::wgl::Window::configInit - 0x5af8b0b0
13: eq::Window::getTransferSystemWindow - 0x5af688a0
12: eq::Window::makeCurrentTransfer - 0x5af68cb0
11: eq::Channel::_cmdFinishReadback - 0x5ae1ed60
10: co::CommandFunc<co::Dispatcher>::operator() - 0x59a9a4c0
9: co::Command::operator() - 0x59a99ae0
8: co::WorkerThread<co::CommandQueue>::run - 0x59bc3f50
7: lunchbox::Thread::_runChild - 0x63d796e0
6: lunchbox::Thread::runChild - 0x63d796b0

@bohara
Copy link

bohara commented Nov 8, 2012

Using RHEL 6.3 on one node, using a config with 2 Nodes and 2 gpus per node (multi-process, DirectSend Spatial DB).
config file: https://gist.github.com/4039942

PixelBufferObject::mapRead deadlocks. Might be related to the original reported error.

Thread 3 (Thread 0x2aaaae47c700 (LWP 6934)):
#0  0x00002b46a7faf419 in ?? () from /usr/lib64/nvidia/libGL.so.1
#1  0x00002b46a7faf443 in ?? () from /usr/lib64/nvidia/libGL.so.1
#2  0x00002b46b1cdf927 in ?? () from /usr/lib64/nvidia/libnvidia-glcore.so.295.41
#3  0x00002b46b1c5c049 in ?? () from /usr/lib64/nvidia/libnvidia-glcore.so.295.41
#4  0x00002b46b1bfd9be in ?? () from /usr/lib64/nvidia/libnvidia-glcore.so.295.41
#5  0x00002b46b1bfdb2b in ?? () from /usr/lib64/nvidia/libnvidia-glcore.so.295.41
#6  0x00002b46b19c3699 in ?? () from /usr/lib64/nvidia/libnvidia-glcore.so.295.41
#7  0x00002b46adc56263 in eq::util::detail::PixelBufferObject::mapRead (this=0x2b46ec2bdcf0) at /home/bohara/Buildyard/src/Equalizer/libs/eq/util/pixelBufferObject.cpp:140
#8  0x00002b46adc545a6 in eq::util::PixelBufferObject::mapRead (this=0x2b46ec2bd4a0) at /home/bohara/Buildyard/src/Equalizer/libs/eq/util/pixelBufferObject.cpp:240
#9  0x00002b46adc6892e in eq::plugin::CompressorReadDrawPixels::finishDownload (this=0x2b46ec2bd300, glewContext=0x2aaab00012f0, inDims=0x2aaaae47b780, flags=340, outDims=0x2aaaae47b760, out=0x2b46ec2b6f38)
    at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/compressor/compressorReadDrawPixels.cpp:487
#10 0x00002b46adc60def in EqCompressorFinishDownload (ptr=0x2b46ec2bd300, name=257, glewContext=0x2aaab00012f0, inDims=0x2aaaae47b780, flags=340, outDims=0x2aaaae47b760, out=0x2b46ec2b6f38)
    at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/compressor/compressor.cpp:245
#11 0x00002b46adc3617b in eq::util::GPUCompressor::finishDownload (this=0x2b46ec2b6e20, pvpIn=..., flags=84, pvpOut=..., out=0x2b46ec2b6f38)
    at /home/bohara/Buildyard/src/Equalizer/libs/eq/util/gpuCompressor.cpp:181
#12 0x00002b46adb6cba1 in eq::Image::_finishReadback (this=0x2b46ec2b7420, buffer=eq::fabric::Frame::BUFFER_COLOR, zoom=..., glewContext=0x2aaab00012f0)
    at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/image.cpp:672
#13 0x00002b46adb6c506 in eq::Image::finishReadback (this=0x2b46ec2b7420, zoom=..., glewContext=0x2aaab00012f0) at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/image.cpp:624
#14 0x00002b46adabfbe1 in eq::Channel::_finishReadback (this=0x2b46ec45e6b0, frameDataVersion=..., imageIndex=0, frameNumber=5, taskID=4, nodes=std::vector of length 1, capacity 1 = {...}, 
    netNodes=std::vector of length 1, capacity 1 = {...}) at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/channel.cpp:1633
#15 0x00002b46adac74b4 in eq::Channel::_cmdFinishReadback (this=0x2b46ec45e6b0, cmd=...) at /home/bohara/Buildyard/src/Equalizer/libs/eq/client/channel.cpp:2163
#16 0x00002b46ae16cc6b in co::CommandFunc<co::Dispatcher>::operator() (this=0x2aaaae47bb90, command=...) at /home/bohara/Buildyard/src/Collage/co/commandFunc.h:60
#17 0x00002b46ae16bfaf in co::ICommand::operator() (this=0x2aaaae47bbd0) at /home/bohara/Buildyard/src/Collage/co/iCommand.cpp:214
#18 0x00002b46ae1fe0f8 in co::WorkerThread<co::CommandQueue>::run (this=0x2b46cc018310) at /home/bohara/Buildyard/src/Collage/co/worker.ipp:32
#19 0x00002b46ae528203 in lunchbox::Thread::_runChild (this=0x2b46cc018310) at /home/bohara/Buildyard/src/Lunchbox/lunchbox/thread.cpp:140
#20 0x00002b46ae527c5a in lunchbox::Thread::runChild (arg=0x2b46cc018310) at /home/bohara/Buildyard/src/Lunchbox/lunchbox/thread.cpp:117
#21 0x00002b46a7fb7b74 in ?? () from /usr/lib64/nvidia/libGL.so.1
#22 0x00002b46affc1851 in start_thread () from /lib64/libpthread.so.0
#23 0x00002b46b02bf11d in clone () from /lib64/libc.so.6

@eile
Copy link
Member Author

eile commented Nov 8, 2012

Hmm, this bug was in Windows and resulted in a crash. Your bug seems related, but is not. Great to have another driver-specific issue. :-/

Can you open another bug? Does the startReadback call a glFlush after the initial, non-blocking readpixels?

@bohara
Copy link

bohara commented Nov 8, 2012

Yea, I see so. The glFlush() is called only after initPBO and glReadPixels in startDownload, which is in-turn is called from startReadback.

@eile
Copy link
Member Author

eile commented Nov 14, 2012

See #177 (comment) for an explanation of this bug. Fix WIP.

eile pushed a commit that referenced this issue Nov 14, 2012
@tribal-tec
Copy link
Member

39e45bf fixes this issue

eile pushed a commit that referenced this issue Nov 14, 2012
… thread instead of transfer thread

Conflicts:
	libs/eq/client/channel.cpp
	libs/eq/client/pipe.cpp
@eile
Copy link
Member Author

eile commented Nov 14, 2012

@dulley / @delyas please verify. Change is applied to 1.4 and master.

@eile eile closed this as completed Nov 14, 2012
tribal-tec added a commit to tribal-tec/Equalizer that referenced this issue Nov 26, 2012
…ale#177; create shared context from render thread instead of async fetch thread
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants