Comments (14)
@anthony-tuininga
Yes, i did, odpi has no bug or error now. I have sync test with OCI interface(OCI). Both are having same lib error. However, I need to confirm with my team this 7 unique error are commons. It won't be affect the application.
from odpi.
Can you specify how you got this report? Which application did you run?
from odpi.
I'm running on Redhat Linux OS Maipo, I just simple compile the one of the sample.
For example, gcc -I../Include SampleLib.c TestConvertNumber.c -lodpic -ldl
then
valgrind --leak-check=full --track-origins=yes ./a.out
from odpi.
Some errors are related to ODPI-C. It tends to forget to allocate additional one byte for nul terminator.
However some errors are related to Oracle libraries. They should be suppressed by a suppression file because ODPI-C cannot fix them.
http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress
from odpi.
In particular, suppress all the zt* errors.
Valgrind isn't so good with the non-gcc generated binaries that Oracle builds.
from odpi.
Some errors are related to ODPI-C. It tends to forget to allocate additional one byte for nul terminator.
Do you know where these are? I'd happily fix them!
Would it be helpful to ship a Valgrind suppression file? I have one I use internally, for example.
from odpi.
Attached the full valgrind Report for TestConvertNumber.c . However, our dev team will on hold for this issue fixed, debug line number attached for easier look.
from odpi.
@Taymindis if you have an identified ODPI error, please report it. Other valgrind errors in layers beneath ODPI are unlikely to be 'fixed'. I once spent a long time logging bugs on similar issues. When examined by the relevant developers, most were due to the valgrind not dealing correctly with the compiler used by Oracle. I also have a suspicion (with no proof) that some of the zt output is a deliberate way to increase entropy.
from odpi.
This is the part of the test file issue
==18314==
==18314==
==18314== 1 errors in context 11 of 280:
==18314== Invalid read of size 1
==18314== at 0x401245: dpiSamples__getEnvValue (SampleLib.c:58)
==18314== by 0x4014BC: dpiSamples_getParams (SampleLib.c:136)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
==18314== Address 0x570f2cd is 0 bytes after a block of size 13 alloc'd
==18314== at 0x4C29BE3: malloc (vg_replace_malloc.c:299)
==18314== by 0x4011D1: dpiSamples__getEnvValue (SampleLib.c:52)
==18314== by 0x4014BC: dpiSamples_getParams (SampleLib.c:136)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
==18314==
==18314==
==18314== 1 errors in context 12 of 280:
==18314== Invalid read of size 1
==18314== at 0x401245: dpiSamples__getEnvValue (SampleLib.c:58)
==18314== by 0x40145F: dpiSamples_getParams (SampleLib.c:130)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
==18314== Address 0x570f158 is 0 bytes after a block of size 8 alloc'd
==18314== at 0x4C29BE3: malloc (vg_replace_malloc.c:299)
==18314== by 0x4011D1: dpiSamples__getEnvValue (SampleLib.c:52)
==18314== by 0x40145F: dpiSamples_getParams (SampleLib.c:130)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
==18314==
==18314==
==18314== 1 errors in context 13 of 280:
==18314== Invalid read of size 1
==18314== at 0x401245: dpiSamples__getEnvValue (SampleLib.c:58)
==18314== by 0x401421: dpiSamples_getParams (SampleLib.c:126)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
==18314== Address 0x570f0b7 is 0 bytes after a block of size 7 alloc'd
==18314== at 0x4C29BE3: malloc (vg_replace_malloc.c:299)
==18314== by 0x4011D1: dpiSamples__getEnvValue (SampleLib.c:52)
==18314== by 0x401421: dpiSamples_getParams (SampleLib.c:126)
==18314== by 0x401261: dpiSamples_getConn (SampleLib.c:77)
==18314== by 0x400ECA: main (TestConvertNumbers.c:64)
from odpi.
That particular issue was discovered in the test suite and pushed earlier today. I have just done the same for the samples.
from odpi.
@anthony-tuininga @cjbj
I have shrink down the report by using DRMemory. I think you have more clear about the error is, only 7 Errors.
drmemoryReport.txt
from odpi.
Did you do a pull to get the latest changes to the samples? That should correct the issues on top. The other ones may not be fixable. The full call stack isn't found either. Can you increase that somehow? Valgrind has the option --num-callers to address that.
from odpi.
Valgrind isn't so good with the non-gcc generated binaries that Oracle builds.
Thanks. I suspected that valgrind might complains due to intel C compiler.
Do you know where these are? I'd happily fix them!
I found two positions. But sorry, one is different from what I thought. It was already fixed.
The other is oracleHomeLibNameLength
in dpiOci__loadLib()
. It needs more one byte.
Would it be helpful to ship a Valgrind suppression file? I have one I use internally, for example.
It is helpful not only for me, I think.
from odpi.
@anthony-tuininga
Yes, i did, odpi has no bug or error now. I have sync test with OCI interface(OCI). Both are having same lib error. However, I need to confirm with my team this 7 unique error are commons. It won't be affect the application.
Thanks, @Taymindis. Please close this issue when you have confirmed with your team.
Thanks, @kubo. I have added the extra byte for the ORACLE_HOME library path, as suggested.
from odpi.
Related Issues (20)
- XMLTYPE as "real" XML HOT 3
- Ability to set OCI_ATTR_LOBPREFETCH_SIZE HOT 7
- "ORA-03106: fatal two-task communication protocol error" when CLOB is fetched as strings and then lob locators HOT 3
- core dumps generated in libclntsh when timeouts are configured HOT 10
- Any plan to support Apple's M1 plat? HOT 1
- Is there a reference example dequeue message with message ID dequeue option HOT 9
- When ODPI tries to translate a variable to a temporary LOB, and there is inadequate TEMP tablespace, ODPI segfaults when the cursor is closed HOT 6
- M1 Mac issue ( incompatible architecture) HOT 2
- How to use ODPI-C with Oracle Times Ten? HOT 9
- Column Alias Error HOT 7
- Add an option to convert numbers between double and decimal in the same way as node.js, python3, ruby, rust or so HOT 5
- Oracle Rust driver HOT 2
- Option to get json float as float. It is got as double now. HOT 8
- Bytes after nul in members of dpiXid are zeroed. HOT 2
- Is DPI_TPC_END_SUSPEND an undocumented flag in the OCI manual? HOT 3
- dpiEnqOptions_setVisibility and dpiLob_getType are listed not in round_trips.rst HOT 2
- Get column name for position HOT 2
- `dpiStmt_execute` with `DPI_MODE_EXEC_PARSE_ONLY` will create a table. HOT 4
- Retrieving CLOB from an OUT parameter of an Store Procedure HOT 1
- ERROR: DPI-1047: Cannot locate a 32-bit Oracle Client library HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from odpi.