Linux multithreaded limitation with the Oracle8 805 client

Article ID: 1092
Last updated: 31 Jan, 2008
Article ID: 1092
Last updated: 31 Jan, 2008
Revision: 1
Views: 2915
Posted: 20 Aug, 2001
by Dean J.
Updated: 31 Jan, 2008
by Dean J.
Problem


When destroying connections, Linux coredumps on multithreaded builds with the Oracle8 805 client and the Oracle 805, 815, and 817 server. The problem occurs for multithreaded builds built with or without the Rogue Wave Standard C++ Library or the native Standard Library. You may also see the error "kgepop: no error frame to pop to...", usually written to the standard error stream.




Cause


Multithreaded builds on Linux are not supported for the Oracle 8 805 client.

This is an Oracle defect seen only with Oracle 8 805 clients on Linux. The server corrupts memory and results in coredumps on multithreaded builds. The problem may have been fixed in some patches to the server (see the Oracle patch-bug information below), but Source Pro DB has not been certified on these patches.

This usually intermittent problem is most likely attributed to running POSIX threads with the Oracle 8 805 client. The error "kgepop: no error frame to pop to..." is usually written to the standard error stream when this problem occurs.

Related Oracle Bugs:

    Fixes in the 8.0.5.0.2 server for Solaris:
    [709536] If a multithreaded program started many threads executing
                  SQL statements at the same time, SQL memory initialization
                  could run concurrently, causing an access violation.
    [758377] When using a multithreaded OCI application, initializing in
                  OBJECT MODE is not thread-safe and may cause a process dump.
   
    Bug fixes for the 8.0.X server:
    8061N [BUG:781204] Thread-safe client may leak memory on connect/disconnect
    8061   [BUG:908749] OCI object cache not initialized as thread-safe
    8061   [BUG:944913] Dump from multithreaded client
    8061   [BUG:988984] Dump possible from multithreaded client (Rogue Wave #25841)




Action


There are three approaches to solving this problem:

1. Use only single-threaded buildtypes on Linux with the Oracle8 805 client.

2. Upgrade to the Oracle8 817 client if multithreaded builds are necessary.

3. If you must use the Oracle8 805 client with multithreaded builds, a possible workaround is to wrap all OCI calls in a mutex to disable the concurrent usage of the Oracle libraries from a single application. Please note that this workaround is only a suggestion, and has not been tested.

This article was:   Helpful | Not helpful
Report an issue
Article ID: 1092
Last updated: 31 Jan, 2008
Revision: 1
Views: 2915
Posted: 20 Aug, 2001 by Dean J.
Updated: 31 Jan, 2008 by Dean J.

Others in this category