Archived issue #0023756
VBO rendering problem (1)
Description
After the compilation of OCCT with the modification from - 0023457 Slow text rendering - my application started crashing in the NVIDIA graphics driver (nvogInt.dll).
The first situation I was able to identify is when showing/hiding "Triedron" and then calling 'Update' immediately - see below.
The code can be tracked to OpenGl_PrimitiveArray.cxx, line 302:
glDrawArrays (myDrawMode, 0, myVbos[VBOVertices]->GetElemsNb());
The first situation I was able to identify is when showing/hiding "Triedron" and then calling 'Update' immediately - see below.
The code can be tracked to OpenGl_PrimitiveArray.cxx, line 302:
glDrawArrays (myDrawMode, 0, myVbos[VBOVertices]->GetElemsNb());
Steps to reproduce
Unfortunately, I wasn't able to reproduce the problem using DRAW. The command 'vzbufftrihedron' works without a problem because no 'Update' is called. Hence I can only give a C++ reproducer:
V3d_View::TriedronDisplay
V3d_View::Update
or
V3d_View::TriedronErase
V3d_View::Update
Both of the above lines produce an exception in the graphics driver.
V3d_View::TriedronDisplay
V3d_View::Update
or
V3d_View::TriedronErase
V3d_View::Update
Both of the above lines produce an exception in the graphics driver.
Public activity
12 archived notes
Participants are labeled by their role within this record.
Dear Author,
We failed to reproduce this bug on two workstations with NVIDIA graphic cards:
- Windows XP SP3 32-bit on Intel Core2Duo, NVIDIA Quadro FX570 graphic card, drivers version 195.62
- Windows 7 64-bit on Intel Core i7, NVIDIA GeForce GT 240M graphic card, drivers version 260.99
Could you please provide us with your system information, graphic card version and NVIDIA drivers version?
Have you tried different NVIDIA drivers release?
We failed to reproduce this bug on two workstations with NVIDIA graphic cards:
- Windows XP SP3 32-bit on Intel Core2Duo, NVIDIA Quadro FX570 graphic card, drivers version 195.62
- Windows 7 64-bit on Intel Core i7, NVIDIA GeForce GT 240M graphic card, drivers version 260.99
Could you please provide us with your system information, graphic card version and NVIDIA drivers version?
Have you tried different NVIDIA drivers release?
Hello guys,
thanks for investigating.
The test machine was:
- Windows XP SP3 32-bit on Intel Core2Duo, NVIDIA Quadro FX1700, driver version 306.94
I can also test on an Win7 64-bit. I'll post the results soon.
thanks for investigating.
The test machine was:
- Windows XP SP3 32-bit on Intel Core2Duo, NVIDIA Quadro FX1700, driver version 306.94
I can also test on an Win7 64-bit. I'll post the results soon.
And just for the sake of clarity, could you please try, at least temporarily, different release of NVIDIA drivers, maybe even an older one (sometimes "newer" does not mean "more stable")?
Hello Sergey,
I have tested two more NVIDIA drivers for the Win XP configuration listed above:
311.15 and
275.89
Both of them give the same behaviour: crash.
I have also tried on
Windows 7 64-bit on Intel Core i7, NVIDIA Quadro 1000M, driver version 310.90
with the same result.
How did you test exactly?
I will try to reproduce the problem using OCCT samples.
Hope this helps.
I have tested two more NVIDIA drivers for the Win XP configuration listed above:
311.15 and
275.89
Both of them give the same behaviour: crash.
I have also tried on
Windows 7 64-bit on Intel Core i7, NVIDIA Quadro 1000M, driver version 310.90
with the same result.
How did you test exactly?
I will try to reproduce the problem using OCCT samples.
Hope this helps.
Another observation:
I have modified the VTestZBuffTrihedron method from the TKViewerTest project and called
V3dView->Update()
immediately after displaying the trihedron.
After calling 'vzbufftrihedron' in DRAW the problem is NOT reproduced.
I will try the samples now...
I have modified the VTestZBuffTrihedron method from the TKViewerTest project and called
V3dView->Update()
immediately after displaying the trihedron.
After calling 'vzbufftrihedron' in DRAW the problem is NOT reproduced.
I will try the samples now...
This was exactly our test case:
=============================================================
I have modified the VTestZBuffTrihedron method from the TKViewerTest project and called
V3dView->Update()
immediately after displaying the trihedron.
After calling 'vzbufftrihedron' in DRAW the problem is NOT reproduced.
=============================================================
And in order to proceed with analysis, we need a reproducer in a form of a DRAW command.
=============================================================
I have modified the VTestZBuffTrihedron method from the TKViewerTest project and called
V3dView->Update()
immediately after displaying the trihedron.
After calling 'vzbufftrihedron' in DRAW the problem is NOT reproduced.
=============================================================
And in order to proceed with analysis, we need a reproducer in a form of a DRAW command.
Hello Sergey,
it took me some time but I was finally able to reproduce the problem using OCCT samples.
I have pushed the branch CR23756 that allows to spot the problem on my machine (Win XP SP3, 32-bit).
============
Reproducer 1
is the Viewer3d sample. I did not have to change the code to make it crash. I just had to remove the 'TKV2d' functionalities/references in order to compile it.
Please proceed as follows:
- Start the 'Viewer3d' sample
- Go to menu Options->Trihedron->Dynamic Trihedron [AIS_Trihedron is shown]
- Go to menu Options->Trihedron->Static Trihedron ... ['Z-Buffer' trihedron is shown]
- Now change the color e.g. White->Black -> this is where the crash occurs (OpenGl_PrimitiveArray.cxx, line 302)
============
Reproducer 2
is the IE.sln from the CSharp sample.
I have changed the code in OCCViewer::InitViewer in order to provoke the crash. Compile the project, start it and try to open a new document (crash in OpenGl_PrimitiveArray.cxx, line 302).
Apparently, displaying two types of trihedrons twice in a row makes something go wrong (this is actually a real-world scenario I have: the application initializes the viewer with some default settings and then reads user options and applies them to the viewer).
============
I hope this helps to find the root cause of the crash.
Please let me know if you have any problems reproducing the crashes.
it took me some time but I was finally able to reproduce the problem using OCCT samples.
I have pushed the branch CR23756 that allows to spot the problem on my machine (Win XP SP3, 32-bit).
============
Reproducer 1
is the Viewer3d sample. I did not have to change the code to make it crash. I just had to remove the 'TKV2d' functionalities/references in order to compile it.
Please proceed as follows:
- Start the 'Viewer3d' sample
- Go to menu Options->Trihedron->Dynamic Trihedron [AIS_Trihedron is shown]
- Go to menu Options->Trihedron->Static Trihedron ... ['Z-Buffer' trihedron is shown]
- Now change the color e.g. White->Black -> this is where the crash occurs (OpenGl_PrimitiveArray.cxx, line 302)
============
Reproducer 2
is the IE.sln from the CSharp sample.
I have changed the code in OCCViewer::InitViewer in order to provoke the crash. Compile the project, start it and try to open a new document (crash in OpenGl_PrimitiveArray.cxx, line 302).
Apparently, displaying two types of trihedrons twice in a row makes something go wrong (this is actually a real-world scenario I have: the application initializes the viewer with some default settings and then reads user options and applies them to the viewer).
============
I hope this helps to find the root cause of the crash.
Please let me know if you have any problems reproducing the crashes.
Dear Pavel,
Thank you a lot for your efforts!
We will try to reproduce the bug following your scenarios in the near days.
Thank you a lot for your efforts!
We will try to reproduce the bug following your scenarios in the near days.
Patch is ready for review in CR23756_1 branch.
Branch CR23756_1 reviewed without remarks, ready for testing.
The patch seems to solve the problem. No crashes occur where they used to before.
Thanks!
Thanks!
Dear BugMaster,
Branch CR23756_1 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component :
Linux: 3 (3 on master)
Windows: 39 (39 on master)
products component :
Linux: 9 (9 on master)
Windows: 50 (50 on master)
Regressions:
No regressions
Improvements:
No improvements
Testing cases:
Not needed
Testing on Linux:
Total MEMORY difference: 234420556 / 234629096
Total CPU difference: 10769.480000000121 / 10396.86000000029
Testing on Windows:
Total MEMORY difference: 339108148 / 337286356
Total CPU difference: 15753.34375 / 15545.90625
There are not serious differences in images found by testdiff.
Branch CR23756_1 (and products from GIT master) was compiled on Linux and Windows platforms and tested.
[revision removed]
Number of compiler warnings:
occt component :
Linux: 3 (3 on master)
Windows: 39 (39 on master)
products component :
Linux: 9 (9 on master)
Windows: 50 (50 on master)
Regressions:
No regressions
Improvements:
No improvements
Testing cases:
Not needed
Testing on Linux:
Total MEMORY difference: 234420556 / 234629096
Total CPU difference: 10769.480000000121 / 10396.86000000029
Testing on Windows:
Total MEMORY difference: 339108148 / 337286356
Total CPU difference: 15753.34375 / 15545.90625
There are not serious differences in images found by testdiff.
Related records