DiscussionsIssue archiveOCCT:Visualization

Archived issue #0023756

VBO rendering problem (1)

CommunityOCCT:Visualizationclosed12 public notes

Search issues

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());

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.

Public activity

12 archived notes

Participants are labeled by their role within this record.

01Commenter 1
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?
02Author
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.
03Commenter 3
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")?
04Author
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.
05Author
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...
06Commenter 6
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.
07Author
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.
08Commenter 8
Dear Pavel,

Thank you a lot for your efforts!
We will try to reproduce the bug following your scenarios in the near days.
09Commenter 1
Patch is ready for review in CR23756_1 branch.
10Commenter 10
Branch CR23756_1 reviewed without remarks, ready for testing.
11Author
The patch seems to solve the problem. No crashes occur where they used to before.
Thanks!
12Commenter 12
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.

Related records