For those who needs to run SqueakDBX or OpenDBX with Oracle in Mac OS. Here
is what Colin had to do in order to make it work.

Cheers

Mariano

---------- Forwarded message ----------
From: Colin Doherty <colin.dohe...@gmail.com>
Date: Thu, Aug 19, 2010 at 12:10 PM
Subject: Re: Problem with Oracle in Mac OS
To: Mariano Martinez Peck <marianop...@gmail.com>


Hi Mariano,

This is what I did if you want to add it to the documentation:

Platform: OSX 10.6.4 with Squeak 4.1, Oracle Instant Client for OSX 10.2

Installed SqueakDBX using Monticello.

Installed Oracle Instant Client (downloaded base, sqlplus and sdk packages)
to here: /usr/local/instantclient10_2
Created a subdirectory in /usr/local/instantclient10_2 called tns,
containing tnsnames.ora file.

Added the following environment settings to .bash_profile for compilation of
libopendbx-1.5.0:

DYLD_LIBRARY_PATH=/usr/local/instantclient10_2
ORACLE_HOME=/usr/local/instantclient10_2
TNS_ADMIN=/usr/local/instantclient10_2/tns

Compiled libopendbx-1.5.0 using these flags:

CFLAGS="-m32" CPPFLAGS="-m32 -I/usr/local/instantclient10_2/sdk/include"
LDFLAGS="-arch i386 -L/usr/local/instantclient10_2" ./configure
--disable-utils --with-backends=oracle
make
make install

To get SqueakDBX/Oracle to work when Squeak is launched as an OSX
application need to create the following launch configuration file
/etc/launchd.conf, containing:

setenv DYLD_LIBRARY_PATH /usr/local/instantclient10_2
setenv ORACLE_HOME /usr/local/instantclient10_2
setenv TNS_ADMIN /usr/local/instantclient10_2/tns

Need to reboot for launchd.conf to take effect.

You also need to add these environment settings to your .bash_profile in
order to run squeak with SqueakDBX/Oracle from command line:

DYLD_LIBRARY_PATH=/usr/local/lib:/usr/local/instantclient10_2
ORACLE_HOME=/usr/local/instantclient10_2
TNS_ADMIN=/usr/local/instantclient10_2/tns


Cheers
Colin

On Thu, Aug 19, 2010 at 8:36 AM, Mariano Martinez Peck <
marianop...@gmail.com> wrote:

>
>
> On Thu, Aug 19, 2010 at 2:48 AM, Colin Doherty <colin.dohe...@gmail.com>wrote:
>
>> Hi,
>>
>> I've got it working. The problem turned out to be that environment that
>> launched applications in OSX was very minimal and wasn't including all the
>> required paths. You have to add the DYLD_LIBRARY_PATH to the Oracle
>> libraries for the systems /etc/launchd.conf file and it then works, no
>> memory errors etc.
>>
>>
> Great news!  I had a similar problem with DYLD_LIBRARY_PATH and oracle but
> in Linux. See this link
> http://www.squeakdbx.org/Oracle
>
> In http://www.squeakdbx.org/Different%20backends%20under%20Mac
> you see there is no entry for Oracle ;)
> So....if you want to give us a hand and help with the documentation, please
> let me know. I can create you a user or to send me text.
>
> thanks
>
> mariano
>
>
>
>> Thanks for all your help previously.
>>
>> Cheers
>> Colin
>>
>>
>> On Wed, Aug 18, 2010 at 6:25 PM, Mariano Martinez Peck <
>> marianop...@gmail.com> wrote:
>>
>>>
>>>
>>> On Wed, Aug 18, 2010 at 7:21 PM, Colin Doherty 
>>> <colin.dohe...@gmail.com>wrote:
>>>
>>>> That's quite possible given my limited C skills. This is what I did,
>>>> just added switch statement and declared error variable:
>>>>
>>>>
>>> Don't worry. I am C limited also...Norbert is the expert here ;)
>>>
>>>
>>>> sb4 error;
>>>>
>>>> if( ( conn->errcode = OCIEnvCreate( &env, OCI_THREADED, NULL, NULL,
>>>> NULL, NULL, 0, NULL ) ) != OCI_SUCCESS )
>>>> {
>>>>         switch( conn->errcode )
>>>>         {
>>>>                 case OCI_SUCCESS:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Success" );
>>>>                         break;
>>>>                 case OCI_SUCCESS_WITH_INFO:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Success with info" );
>>>>                         break;
>>>>                 case OCI_NEED_DATA:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Need data" );
>>>>                         break;
>>>>                 case OCI_NO_DATA:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "No data" );
>>>>                         break;
>>>>                 case OCI_ERROR:
>>>>                         OCIErrorGet( (dvoid*) conn->err, 1, NULL,
>>>> &error, (text*) conn->errmsg, OCI_ERROR_MAXMSG_SIZE, OCI_HTYPE_ERROR
>>>> );
>>>>                         break;
>>>>                 case OCI_INVALID_HANDLE:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Invalid handle" );
>>>>                         break;
>>>>                 case OCI_STILL_EXECUTING:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Still executing" );
>>>>                         break;
>>>>                 case OCI_CONTINUE:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Continue" );
>>>>                         break;
>>>>                 default:
>>>>                         snprintf( conn->errmsg, OCI_ERROR_MAXMSG_SIZE,
>>>> "Unknown error" );
>>>>                         break;
>>>>         }
>>>>
>>>> printf("2-hndl-cleanup");
>>>> printf("ODBX_ERR_NOMEM1 error: %d \n", conn->errcode);
>>>> oracle_odbx_error(handle);
>>>> oracle_priv_handle_cleanup( handle );
>>>> return -ODBX_ERR_NOMEM;
>>>> }
>>>>
>>>
>>> And all the output of these printf where are they? did you check in the
>>> console?  If you run Squeak from the console, and squeak uses OpenDBX
>>> binaries that you modified and added this log, they should appear in the
>>> console output....But....be SURE you are using your own compiled and
>>> modified opendbx binary  :)
>>>
>>> do you know in which of the case it is entering?
>>>
>>> Thanks for all the testing you are doing...hope we can get it ;)
>>>
>>> cheers
>>>
>>> Mariano
>>>
>>>
>>>
>>>>
>>>> However, the memory error was occurring in Squeak/Pharo with SqueakDBX
>>>> before I did this, so even if there is a memory bug above it doesn't 
>>>> explain
>>>> that error.
>>>>
>>>
>>> maybe you are right.
>>>
>>>
>>>>
>>>> Cheers
>>>> Colin
>>>>
>>>>
>>>> On Wed, Aug 18, 2010 at 2:44 PM, Mariano Martinez Peck <
>>>> marianop...@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Aug 18, 2010 at 3:17 PM, Colin Doherty <
>>>>> colin.dohe...@gmail.com> wrote:
>>>>>
>>>>>>  Did you do what Norbert said about using the oracle functions to get
>>>>>> more info about the error ?
>>>>>>
>>>>>> - Yes, I believe so, that's what produced the additional log entries
>>>>>> from what I can see:
>>>>>>
>>>>>>
>>>>> Can you paste please the code you did in OpenDBX for this?  Maybe there
>>>>> is something wrong there and that's what is causing the malloc error, and
>>>>> not the real cause of the error ;)
>>>>>
>>>>> CC Norbert also.
>>>>>
>>>>>
>>>>>
>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook
>>>>>> [0x0-0x29029].org.squeak.SqueakAllInOne41[9243]: Squeak VM
>>>>>> Opt(9243,0xa035f500) malloc: *** error for object 0xf1f2f3f4: pointer 
>>>>>> being
>>>>>> freed was not allocated
>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook
>>>>>> [0x0-0x29029].org.squeak.SqueakAllInOne41[9243]: *** set a breakpoint in
>>>>>> malloc_error_break to debug
>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook Squeak VM Opt[9243]: Squeak VM
>>>>>> Opt(9243,0xa035f500) malloc: *** error for object 0xf1f2f3f4: pointer 
>>>>>> being
>>>>>> freed was not allocated\n*** set a breakpoint in malloc_error_break to 
>>>>>> debug
>>>>>>
>>>>>> From what I've read malloc_error_break is an OSX memory error,
>>>>>> presumably it's trying to free memory on an object that doesn't exist ?
>>>>>> It looks like you can use Xcode to set a malloc_error_break but I
>>>>>> don't know how you would hook SqueakDBX to this, if it's possible ?
>>>>>>
>>>>>>
>>>>> This is "complicated" since you have to compile the SqueakVM with XCode
>>>>> and maybe put a breakpoint from there....
>>>>>
>>>>>
>>>>>
>>>>>> Cheers
>>>>>> Colin
>>>>>>
>>>>>>
>>>>>> On Wed, Aug 18, 2010 at 9:39 AM, Mariano Martinez Peck <
>>>>>> marianop...@gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Aug 15, 2010 at 10:58 PM, Colin Doherty <
>>>>>>> colin.dohe...@gmail.com> wrote:
>>>>>>>
>>>>>>>> Works with odbxtest too:
>>>>>>>>
>>>>>>>>
>>>>>>> ok....So..opendbx is working correctly. The problem is then with
>>>>>>> SqueakDBX.
>>>>>>>
>>>>>>>
>>>>>>>> Seem to have got some further debug info by adding the additional
>>>>>>>> error code suggested for the OutOfMemory error occurring in Squeak, 
>>>>>>>> not sure
>>>>>>>> if it helps:
>>>>>>>>
>>>>>>>>
>>>>>>> I am not sure if this helps. Did you do what Norbert said about using
>>>>>>> the oracle functions to get more info about the error ?
>>>>>>>
>>>>>>>
>>>>>>> " use the OCI error functions and pass the return value to them (like
>>>>>>> in oracle_odbx_error()). Maybe you get a descriptive error message and a
>>>>>>> hint for further investigations."
>>>>>>>
>>>>>>> Probably with that we can know which is the problem...
>>>>>>>
>>>>>>> thanks for the testing
>>>>>>>
>>>>>>> Mariano
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook
>>>>>>>> [0x0-0x29029].org.squeak.SqueakAllInOne41[9243]: Squeak VM
>>>>>>>> Opt(9243,0xa035f500) malloc: *** error for object 0xf1f2f3f4: pointer 
>>>>>>>> being
>>>>>>>> freed was not allocated
>>>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook
>>>>>>>> [0x0-0x29029].org.squeak.SqueakAllInOne41[9243]: *** set a breakpoint 
>>>>>>>> in
>>>>>>>> malloc_error_break to debug
>>>>>>>> Aug 15 21:54:09 Colin-Dohertys-MacBook Squeak VM Opt[9243]: Squeak
>>>>>>>> VM Opt(9243,0xa035f500) malloc: *** error for object 0xf1f2f3f4: 
>>>>>>>> pointer
>>>>>>>> being freed was not allocated\n*** set a breakpoint in 
>>>>>>>> malloc_error_break to
>>>>>>>> debug
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>> Colin
>>>>>>>>
>>>>>>>> On Sun, Aug 15, 2010 at 9:16 PM, Mariano Martinez Peck <
>>>>>>>> marianop...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Aug 15, 2010 at 9:18 PM, Colin Doherty <
>>>>>>>>> colin.dohe...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Mariano, Norbert,
>>>>>>>>>>
>>>>>>>>>> I've got the odbxplustest to work with Oracle, it needed the fully
>>>>>>>>>> qualified service name defined on the server rather than that defined
>>>>>>>>>> locally in the TNS settings to function correctly:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> and what about odbxtest  ??  not plus....as that's uses c++
>>>>>>>>>
>>>>>>>>> is it working too?
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> However, in order to get around the problem of Squeak not finding
>>>>>>>>>> the Oracle client library referenced by the odbx library I had to 
>>>>>>>>>> create the
>>>>>>>>>> /b/32_216/rdbms/lib/ directory referenced from within the Oracle 
>>>>>>>>>> library
>>>>>>>>>> libclntsh.dylib.10.1 distributed with Oracle Instant Client. When I 
>>>>>>>>>> try to
>>>>>>>>>> then use this in Squeak I get a DBXFatalError: FATAL OpenDBX: Out of 
>>>>>>>>>> memory
>>>>>>>>>> - note no errors are logged to the squeak debug log when this occurs.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Could you try what Norbert say to use Oracle funcions to see more
>>>>>>>>> details about the problem?
>>>>>>>>>
>>>>>>>>> thanks a lot in advance
>>>>>>>>>
>>>>>>>>> mariano
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> So it appears odbx is working but SqueakDBX seems to have an issue
>>>>>>>>>> ?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>> Colin
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Aug 2, 2010 at 8:27 PM, Mariano Martinez Peck <
>>>>>>>>>> marianop...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Norbert. Colin (in this mail, so please reply to all), has a
>>>>>>>>>>> problem with Oracle in Mac OS.
>>>>>>>>>>>
>>>>>>>>>>> He can configure and compiles without any problem. But when
>>>>>>>>>>> running the opendbx tests, he has the following error:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 1. Run:
>>>>>>>>>>>   Conn::Conn()
>>>>>>>>>>> Caught exception: Out of memory
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> That problem is in odbx_init_oracle, as it is answering
>>>>>>>>>>> ODBX_ERR_NOMEM  in oracle_odbx_init() where it does:
>>>>>>>>>>>
>>>>>>>>>>>      if( ( conn->errcode = OCIEnvCreate( &env, OCI_THREADED,
>>>>>>>>>>> NULL, NULL, NULL, NULL, 0, NULL ) ) != OCI_SUCCESS )
>>>>>>>>>>>         {
>>>>>>>>>>>                 printf("2-hndl-cleanup");
>>>>>>>>>>>                 oracle_priv_handle_cleanup( handle );
>>>>>>>>>>>                 return -ODBX_ERR_NOMEM;
>>>>>>>>>>>         }
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> The error code was: ODBX_ERR_NOMEM1 error: -1
>>>>>>>>>>>
>>>>>>>>>>> So OCIEnvCreate is answering -1....
>>>>>>>>>>>
>>>>>>>>>>> I had the same problem in Windows, and my problem is that I was
>>>>>>>>>>> using ANOTHER oci.dll. In his case, he checked and only has ONE 
>>>>>>>>>>> library.
>>>>>>>>>>>
>>>>>>>>>>> So, we have no idea what to do.
>>>>>>>>>>>
>>>>>>>>>>> Any quotes?
>>>>>>>>>>>
>>>>>>>>>>> Thanks in advance,
>>>>>>>>>>>
>>>>>>>>>>> Mariano
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Aug 2, 2010 at 7:43 PM, Colin Doherty <
>>>>>>>>>>> colin.dohe...@gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> I've added the printf() to oracle_basic.c and it's failing here:
>>>>>>>>>>>>
>>>>>>>>>>>>         if( ( conn->errcode = OCIEnvCreate( &env, OCI_THREADED,
>>>>>>>>>>>> NULL, NULL, NULL, NULL, 0, NULL ) ) != OCI_SUCCESS )
>>>>>>>>>>>>         {
>>>>>>>>>>>>                 printf("2-hndl-cleanup");
>>>>>>>>>>>>                 oracle_priv_handle_cleanup( handle );
>>>>>>>>>>>>                 return -ODBX_ERR_NOMEM;
>>>>>>>>>>>>         }
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers
>>>>>>>>>>>> Colin
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Aug 1, 2010 at 8:43 PM, Mariano Martinez Peck <
>>>>>>>>>>>> marianop...@gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> maybe you can edit oracle_basic.c  and put some flags in the
>>>>>>>>>>>>> function oracle_odbx_init()
>>>>>>>>>>>>> There, you will see several times it is returned
>>>>>>>>>>>>> -ODBX_ERR_NOMEM
>>>>>>>>>>>>> (the error you have)
>>>>>>>>>>>>>
>>>>>>>>>>>>> So maybe we should detect WHERE it is failing, and then, why.
>>>>>>>>>>>>>
>>>>>>>>>>>>> You can just add some printf() and then just recompile.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I know this is crap....but it is the only thing I can do.
>>>>>>>>>>>>>
>>>>>>>>>>>>> cheers
>>>>>>>>>>>>>
>>>>>>>>>>>>> mariano
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Sun, Aug 1, 2010 at 9:39 PM, Mariano Martinez Peck <
>>>>>>>>>>>>> marianop...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ---------- Forwarded message ----------
>>>>>>>>>>>>>> From: OpenDBX devel list <
>>>>>>>>>>>>>> libopendbx-devel@lists.sourceforge.net>
>>>>>>>>>>>>>> Date: Tue, Jun 9, 2009 at 9:34 PM
>>>>>>>>>>>>>> Subject: Re: [opendbx] OpenDBX binaries for Windows
>>>>>>>>>>>>>> To: libopendbx-devel@lists.sourceforge.net
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Mariano
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> > I tried again with your dll for oracle and I get the SAME
>>>>>>>>>>>>>> error I got when
>>>>>>>>>>>>>> > I compiled by myself. I have the OUT_OF_MEMORY problem. See
>>>>>>>>>>>>>> mail with
>>>>>>>>>>>>>> > subject: 'Oracle in Windows' (i couldnt find it in gmane).
>>>>>>>>>>>>>> Perhaps during
>>>>>>>>>>>>>> > this week I can put some flags and see where the problem is.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Did you found something new?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ODBX_ERR_NOMEM is probably returned by oracle_odbx_init() when
>>>>>>>>>>>>>> a handle
>>>>>>>>>>>>>> couldn't be allocated.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Norbert
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> OpenPGP public key
>>>>>>>>>>>>>> http://www.linuxnetworks.de/norbert.pubkey.asc
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>>>>>>>>>>>> Check out the new simplified licensing option that enables
>>>>>>>>>>>>>> unlimited
>>>>>>>>>>>>>> royalty-free distribution of the report engine for externally
>>>>>>>>>>>>>> facing
>>>>>>>>>>>>>> server and web deployment.
>>>>>>>>>>>>>> http://p.sf.net/sfu/businessobjects
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> libopendbx-devel mailing list
>>>>>>>>>>>>>> libopendbx-devel@lists.sourceforge.net
>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/libopendbx-devel
>>>>>>>>>>>>>> http://www.linuxnetworks.de/doc/index.php/OpenDBX
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
libopendbx-devel mailing list
libopendbx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libopendbx-devel
http://www.linuxnetworks.de/doc/index.php/OpenDBX

Reply via email to