Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.9.0
-
-
4e94132fb (6.9), 4a8350da2 (6.9)
Description
The oracle OCI SQl Plugin is unusable. The first query results in an exception.
Exception thrown: read access violation.
{}d{} was 0xFFFFFFFFFFFFFF27.
The exception is thrown on delete d->cols; in line 1911 in qsql_oci.cpp function QOCIResult::internal_prepare.
The debugger shows 0xcdcdcdcdcdcdcdcd as value for d.
There is a new QOCIResultPrivate *d_ptr; in class QOCIResult, but that pointer is never initialized in the constructor.
Qt was built with:
..\Qt6.9\configure -debug -c+std c+20 -force-debug-info -prefix c:\Qt\6.9.0-debug -sql-oci -no-feature-accessibility -skip qtwebengine -skip qtpdf – -DOracle_LIBRARY=C:\ocisdk\oci.lib -DOracle_INCLUDE_DIR=C:\ocisdk\include
cmake --build . --parallel
cmake --install .
When following is inserted in the constructor
d_ptr = (QOCIResultPrivate*)QSqlCachedResult::d_ptr;
in the constructor, the simple example works. Seems the pimpl handling is messed up completly.
Problem was said to have started with
https://codereview.qt-project.org/c/qt/qtbase/+/553808
and this made it build
https://codereview.qt-project.org/c/qt/qtbase/+/571566
Attachments
For Gerrit Dashboard: QTBUG-136024 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
640712,4 | SQL/OCI: Fix usage of QOCIResult::d_ptr | dev | qt/qtbase | Status: MERGED | +2 | 0 |
640713,3 | SQL/OCI: do not shadow QSqlCachedResultPrivate::sql | dev | qt/qtbase | Status: MERGED | +2 | +1 |
641222,2 | SQL/OCI: Fix usage of QOCIResult::d_ptr | 6.9 | qt/qtbase | Status: MERGED | +2 | 0 |
641223,4 | SQL/OCI: do not shadow QSqlCachedResultPrivate::sql | 6.9 | qt/qtbase | Status: MERGED | +2 | +1 |