<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-8986782557879316238</id><updated>2009-07-06T00:15:27.449-07:00</updated><title type='text'>Paul Beach's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default?start-index=26&amp;max-results=25'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-9014134503467047354</id><published>2009-07-06T00:13:00.000-07:00</published><updated>2009-07-06T00:15:27.460-07:00</updated><title type='text'>Firebird /Java Plugin Milestone One</title><content type='html'>Posted by Adriano in Firebird Development:&lt;br /&gt;&lt;br /&gt;"I'm pleased to announce availability [1] of the first test version of&lt;br /&gt;FB/Java plugin.&lt;br /&gt;&lt;br /&gt;FB/Java is a plugin for FB external engines feature, to be presented in&lt;br /&gt;v3.0, that allows execution of Java code at the server side. The plugin&lt;br /&gt;allows classes/resources in the file system or stored in the database.&lt;br /&gt;File system classes/resources are global and the code run with all&lt;br /&gt;permissions. Database classes/resources are per-database and code runs&lt;br /&gt;accordingly with per-engine configured security policy.&lt;br /&gt;&lt;br /&gt;The plugin has been made with the assumption that anything could be done&lt;br /&gt;using existing FB infrastructure. You don't need to setup FTP server or&lt;br /&gt;shared directory in the server to update your code or edit security police.&lt;br /&gt;&lt;br /&gt;Installation/update of database JARs works from client command line&lt;br /&gt;utility or from SQLJ package procedures. Actually, the same Java class&lt;br /&gt;that run in the client is the one that runs in the server. You can put&lt;br /&gt;JARs in the database using a Java URL, so lookup of them is not&lt;br /&gt;restricted to client or server.&lt;br /&gt;&lt;br /&gt;Security handling is configured in a central database, with a single&lt;br /&gt;PERMISSION table. Permissions are granted to users that executes the&lt;br /&gt;Java code. This way to configure permissions is not adequate for every&lt;br /&gt;(or most) cases, and roles are not supported at the moment. I suppose&lt;br /&gt;and desire we can have a better design in the future, before a final&lt;br /&gt;release.&lt;br /&gt;&lt;br /&gt;It's welcome any attempt to bypass the security system. But please,&lt;br /&gt;report it. :-)&lt;br /&gt;&lt;br /&gt;This version also lacks some notification mechanism for when the code&lt;br /&gt;are going to be unloaded. You may note the problem in the example, right&lt;br /&gt;after disconnect all attachments from the database the log file remains&lt;br /&gt;locked, as it wasn't been garbaged collected. And no kind of "hot&lt;br /&gt;redeployment" support had been implemented or tested. However, I have&lt;br /&gt;ideas of how these problems can be solved in very good ways, based on&lt;br /&gt;existing models. For unloading (or any other type of notification),&lt;br /&gt;JPA-like listeners. For maintain state after redeployments, serializable&lt;br /&gt;sessions.&lt;br /&gt;&lt;br /&gt;In the file plugins\java-engine\examples\fbjava\README, you found&lt;br /&gt;instructions for a "quick start" with it. In&lt;br /&gt;plugins\java-engine\examples\tests there are functional tests for many&lt;br /&gt;of its feature (i.e., how type mappings works, etc).&lt;br /&gt;&lt;br /&gt;The plugin is based on Jaybird 2.2 (HEAD). I've put it in a maven&lt;br /&gt;repository at [2], with its version defined as 2.2-jrt-SNAPSHOT.&lt;br /&gt;&lt;br /&gt;The server includes my v3.0 changes, supporting packages, DDL triggers,&lt;br /&gt;over clause and some internal changes. It may have others instabilities.&lt;br /&gt;&lt;br /&gt;If you have a JAVA_HOME environment variable defined, it should just&lt;br /&gt;works without any other configuration. The quick start assumes you had&lt;br /&gt;defined FIREBIRD, ISC_USER and ISC_PASSWORD. In [1], I've zipped plugin&lt;br /&gt;and engine together, but plugin installation consists in just unpacking&lt;br /&gt;it in FB directory.&lt;br /&gt;&lt;br /&gt;Documentation has room for improvements, and is at [3]. I've done it&lt;br /&gt;with FB docbook tools.&lt;br /&gt;&lt;br /&gt;Source code is in [4].&lt;br /&gt;&lt;br /&gt;Happy testing and thanks.&lt;br /&gt;Adriano"&lt;br /&gt;&lt;br /&gt;[1] http://www.firebirdsql.org/downloads/rabbits/asfernandes/fbjava/fbjava-m1.zip&lt;br /&gt;[win32]&lt;br /&gt;[2] http://www.firebirdsql.org/downloads/rabbits/asfernandes/maven2&lt;br /&gt;[3] http://www.firebirdsql.org/downloads/rabbits/asfernandes/fbjava/fbjava.pdf&lt;br /&gt;(included in [1])&lt;br /&gt;[4] https://firebird.svn.sourceforge.net/svnroot/firebird/java-plugin/tags/2.2-jrt-M1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-9014134503467047354?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/9014134503467047354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=9014134503467047354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/9014134503467047354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/9014134503467047354'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/07/firebird-java-plugin-milestone-one.html' title='Firebird /Java Plugin Milestone One'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-6693394770114714272</id><published>2009-06-30T00:35:00.001-07:00</published><updated>2009-06-30T00:37:01.070-07:00</updated><title type='text'>IBPhoenix Web Site</title><content type='html'>I need to post a note on my blog about the IBPhoenix Web site, it seems we are having problems with the T1 line. It looks like there is a problem in the central phone office, where our T1 line originates.  It's been a problem now for several days. The issue has been escalated, so hopefully things will improve shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-6693394770114714272?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/6693394770114714272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=6693394770114714272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6693394770114714272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6693394770114714272'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/06/ibphoenix-web-site.html' title='IBPhoenix Web Site'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-1610496878917323063</id><published>2009-06-25T04:16:00.000-07:00</published><updated>2009-06-25T04:20:34.575-07:00</updated><title type='text'>../src/include/types_pub.h:88: error: conflicting declaration 'typedef int ISC_LONG'</title><content type='html'>Building Firebird 64bit on Solaris (sparc or intel) can sometimes produce the following error:&lt;br /&gt; -c ../src/jrd/dsc.cpp -o ../temp/boot/jrd/dsc.o&lt;br /&gt;../src/include/types_pub.h:88: error: conflicting declaration 'typedef int ISC_LONG'&lt;br /&gt;../src/include/fb_types.h:69: error: 'ISC_LONG' has a previous declaration as 'typedef SLONG ISC_LONG'&lt;br /&gt;../src/include/types_pub.h:89: error: conflicting declaration 'typedef unsigned int ISC_ULONG'&lt;br /&gt;../src/include/fb_types.h:70: error: 'ISC_ULONG' has a previous declaration as 'typedef ULONG ISC_ULONG&lt;br /&gt;&lt;br /&gt;If you see this - then you made a mistake in the build process. Configure.in when you invoked it, assumed that the size of long was 4, and you are attempting to build Firebird for a 32bit environment. As per the prefix.solaris files, you must set the following before running configure:&lt;br /&gt;&lt;br /&gt;export CXXFLAGS='-m64'&lt;br /&gt;export CFLAGS='-m64'&lt;br /&gt;export LDFLAGS='-m64'&lt;br /&gt;&lt;br /&gt;Configure will now automtically realise that you want to build in a 64 bit environment and set the size of long to 8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-1610496878917323063?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/1610496878917323063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=1610496878917323063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1610496878917323063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1610496878917323063'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/06/srcincludetypespubh88-error-conflicting.html' title='../src/include/types_pub.h:88: error: conflicting declaration &apos;typedef int ISC_LONG&apos;'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-251589638249521960</id><published>2009-06-24T23:33:00.001-07:00</published><updated>2009-06-24T23:39:26.537-07:00</updated><title type='text'>Some Positive Feedback for Firebird</title><content type='html'>This message appeared on the Firebird Development list, from Jens Zurawski &lt;br /&gt;&lt;br /&gt;"I think from time to time, one should really send some positive feedback&lt;br /&gt;to the people who are involved into the development of the firebird&lt;br /&gt;DBMS. Thank you very much for your efforts to make this software this good!&lt;br /&gt;&lt;br /&gt;Just before a week or so we eventually upgraded our production server&lt;br /&gt;from linux kernel 2.4 to 2.6.x and the firebird engine from 2.0.x to&lt;br /&gt;2.1.2. As some of you might remember, long time ago we had some big&lt;br /&gt;troubles with kernel 2.6.x and firebird, because our system is under&lt;br /&gt;very heavy contention and we stumbled over many freezes, so we were&lt;br /&gt;stuck to the 2.4.x kernel. (In average there are 75-150 simultaneous&lt;br /&gt;connections to one database, in peak times up to 300. The database is&lt;br /&gt;more than 20GBs in size and is serving for a pool of approx. 7 different&lt;br /&gt;applications, starting from web server (php/java) over some internal&lt;br /&gt;logistics processings (java) up to the CRM front end (Win32 native), and&lt;br /&gt;additionally there are frequent update tasks with long running&lt;br /&gt;transactions (about 10-30 minutes) and massive changes to the database&lt;br /&gt;records in them).&lt;br /&gt;&lt;br /&gt;Now our old database server broke down (hardware problem) and we had to&lt;br /&gt;buy a new one and this time we needed to go for a 2.6.x kernel because&lt;br /&gt;the new hardware was not supported from the old kernel. To my pleasant&lt;br /&gt;surprise, the actual FB 2.1.2 is working very well with a 2.6 kernel and&lt;br /&gt;the heavy contention we still have on our database. Only thing one has&lt;br /&gt;to do is to dramatically increase the semaphores. In the first place we&lt;br /&gt;increased the LockSemCount to 250 (which was the limit of the default&lt;br /&gt;kernel setup) but that wasn't enough. After half of the day firebird&lt;br /&gt;crashed down with a "Fatal lock manager error: semop failed (acquire),&lt;br /&gt;errno: 22", accepted no more new connections and also didn't serve the&lt;br /&gt;existing connections any more. Now after we increased the kernel limit&lt;br /&gt;and set the LockSemCount up to 1024, everything is working very well. No&lt;br /&gt;more freezes, no more crashes. (BTW: ironically this hint I was getting&lt;br /&gt;from a guy who just has collected some experiences with an Oracle&lt;br /&gt;installation on Linux  ;-)&lt;br /&gt;&lt;br /&gt;So, what I want to say: Thanks a lot for all the good work! firebird is&lt;br /&gt;really my most favourite open source project.&lt;br /&gt;&lt;br /&gt;Ah, and the new monitoring tables in FB 2.1 are a gift from heaven! Now&lt;br /&gt;I'm able to track down problems from applications which are not written&lt;br /&gt;by me, because now I can simply monitor hanging transactions or long&lt;br /&gt;running "sub-optimal" queries and send the developer a hint  ;)  Also&lt;br /&gt;thanks a lot for this feature!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-251589638249521960?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/251589638249521960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=251589638249521960' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/251589638249521960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/251589638249521960'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/06/some-positive-feedback-for-firebird.html' title='Some Positive Feedback for Firebird'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-1688865575905133522</id><published>2009-05-07T00:18:00.000-07:00</published><updated>2009-05-07T00:20:08.290-07:00</updated><title type='text'>64 bit Firebird 2.5, and Solaris Sparc</title><content type='html'>Looks like the job is already done... I read the following post on Firebird Development from Bill Oliver (SAS)&lt;br /&gt;&lt;br /&gt;"I confirm that the issues are fixed in HEAD. I confirmed this on 64-bit &lt;br /&gt;Solaris Sparc, built with the Sun Studio native compiler - using pthreads!!!&lt;br /&gt;&lt;br /&gt;"How cool is that! Thanks very much guys for the quick turn-around.&lt;br /&gt;&lt;br /&gt;Also, big thanks to Alex for his assitance with this port!!"&lt;br /&gt;&lt;br /&gt;Excellent work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-1688865575905133522?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/1688865575905133522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=1688865575905133522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1688865575905133522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1688865575905133522'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/05/64-bit-firebird-25-and-solaris-sparc.html' title='64 bit Firebird 2.5, and Solaris Sparc'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4900601325291653435</id><published>2009-04-22T03:01:00.000-07:00</published><updated>2009-04-22T03:22:11.232-07:00</updated><title type='text'>GCC 4.01 MacOSX &amp; Weak Symbols</title><content type='html'>During the QA process for Firebird V2.1.2 we found that there was a problem with creating a database remotely. In effect the inet server would crash.&lt;br /&gt;&lt;br /&gt;On further analysis we found that we have a problem where the function free()(standard C dynamic memory deallocator) was being invoked with the incorrect parameter, an address which had not been allocated using malloc(). &lt;br /&gt;&lt;br /&gt;After setting up the code to make the inet server call abort we got the following stack trace &lt;br /&gt;&lt;br /&gt;(fragment)&lt;br /&gt;&lt;br /&gt;#0  0x90005efc in free ()&lt;br /&gt;#1  0x010440b8 in Firebird::AbstractString::~AbstractString (this=0xbfffcb04) &lt;br /&gt;at ../src/include/../common/classes/fb_string.h:375&lt;br /&gt;#2  0x010440f8 Firebird::StringBase&lt;Firebird::StringComparator&gt;::~StringBase&lt;br /&gt; (this=0xbfffcb04) at ../src/include/../common/classes/fb_string.h:391&lt;br /&gt;#3  0x0101593c in LD_setup_attributes (textTypeName=0xbfffcd60 "ES_ES", &lt;br /&gt;charSetName=0xbfffccdc "ISO8859_1", &lt;br /&gt;configInfo=0x6a1204 "filename=$(this)/fbintl;icu_versions=default", &lt;br /&gt;srcLen=39, src=0x69a898 "DISABLE-COMPRESSIONS=1;SPECIALS-FIRST=1", &lt;br /&gt;dstLen=512, dst=0xbfffcdb8 "DISABLE-COMPRESSIONS=1;SPECIALS-FIRST=1,") &lt;br /&gt;at ../src/intl/ld.cpp:457&lt;br /&gt;#4  0x3011b1b4 in Jrd::IntlManager::setupCollationAttributes &lt;br /&gt;(collationName=@0xbfffd0e4, charSetName=@0xbfffd0b8, &lt;br /&gt;specificAttributes=@0xbfffd14c, newSpecificAttributes=@0xbfffd178) &lt;br /&gt;at ../src/jrd/IntlManager.cpp:317&lt;br /&gt;&lt;br /&gt;From this back trace you can see that free() is called from the operator delete[], where we would have expected MemoryPool::deallocate() to be used. For some&lt;br /&gt;reason the default operator delete[] is used. &lt;br /&gt;&lt;br /&gt;Strange, how did this code arrive at address 0x010440b8?&lt;br /&gt;&lt;br /&gt;After an analysis of nm output for fbintl and the linker's map of symbols Alex found that at this address is in fact located the redefined operator delete[], which was compiled in via ld.cpp. However in the assembly version of the file (ld.cpp), it was correctly redefined (i.e. it was calling MemoryPool::deallocate()) operator delete[]. &lt;br /&gt;&lt;br /&gt;Houston it looks as if we have a buggy toolchain. &lt;br /&gt;&lt;br /&gt;But we also need to take into account that AbstractString dtor() and operator delete[] are also &lt;span style="font-weight:bold;"&gt;WEAK&lt;/span&gt; symbols. Weak meaning that such symbols may be present in many object files, and the linker at link-time will take it from the relevant one. But in this case it looks as if it was taken from another file... &lt;br /&gt;&lt;br /&gt;But after we compiled into assembler all of the files that are used in the fbintl &lt;br /&gt;library we found that they all contained the correctly redefined operator &lt;br /&gt;delete[]. As such there is no use of operator delete[], calling std free() function in our code, but anyway we get such use in the resulting binary.&lt;br /&gt;&lt;br /&gt;In effect it looks like weak symbols are broken on MacOSX GCC 4.01 (Apple build 5747). And the only way to fix a problem is to avoid them.&lt;br /&gt;&lt;br /&gt;We are currently compiling Firebird on PPC 10.4 (Tiger) using a new switch &lt;span style="font-weight:bold;"&gt;-fno-weak&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;fno-weak:&lt;br /&gt;"Do not use weak symbol support, even if it is provided by the linker. By default, G++ will use weak symbols if they are available. This option exists only for testing, and should not be used by end-users; it will result in inferior code and has no benefits."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4900601325291653435?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4900601325291653435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4900601325291653435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4900601325291653435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4900601325291653435'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/04/gcc-401-macosx-weak-symbols.html' title='GCC 4.01 MacOSX &amp; Weak Symbols'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-5360385850125759720</id><published>2009-04-16T08:07:00.001-07:00</published><updated>2009-04-16T08:26:38.191-07:00</updated><title type='text'>MallocLogFile, MacOSX &amp; LaunchDaemons</title><content type='html'>I have been debugging the fb_inet_server trying to find a problem in Firebird 2.1.2 Classic for PowerPC. That takes a little bit of setting up, but I will try and explain that in another blog post. Part of one of the things that I wanted to check was what malloc was doing. However by default any "error" messages get sent to standard out, however you can set the environment variable MallocLogFile to capture messages to a specified file. But setting that in my normal environment is going to work because the  fb_inet_server is actually launched by the LaunchDaemon and is then also forked. So we need to set the environment variable in the LaunchDaemon script directly.&lt;br /&gt;&lt;br /&gt;The solution: &lt;br /&gt;&lt;br /&gt;You need to edit the xml script that "launches" the fb_inet_server. This file can be found in /Library/LaunchDaemons and is called org.firebird.gds.plist&lt;br /&gt;&lt;br /&gt;First of all unload the current launch definition &lt;br /&gt;&lt;br /&gt;launchctl unload /Library/LaunchDaemons/org.firebird.gds.plist&lt;br /&gt;&lt;br /&gt;Then edit the file as follows&lt;br /&gt;After&lt;br /&gt;&lt;br /&gt;&amp;lt;string&amp;gt;org.firebird.gds&amp;lt;/string&amp;gt;&lt;br /&gt;&lt;br /&gt;Add&lt;br /&gt;&lt;br /&gt;&amp;lt;Key&amp;gt;EnvironmentVariables&amp;lt;/Key&amp;gt;&lt;br /&gt;&amp;lt;dict&amp;gt;&lt;br /&gt;&amp;lt;Key&amp;gt;MallocLogFile&amp;lt/Key&amp;gt;&lt;br /&gt;&amp;lt;String&amp;gt;/Library/Frameworks/Firebird.framework/Malloc.log&amp;lt;/String&amp;gt;&lt;br /&gt;&amp;lt;/dict&amp;gt;&lt;br /&gt;&lt;br /&gt;Save and&lt;br /&gt;&lt;br /&gt;launchctl load /Library/LaunchDaemons/org.firebird.gds.plist&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-5360385850125759720?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/5360385850125759720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=5360385850125759720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5360385850125759720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5360385850125759720'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/04/malloclogfile-macosx-launchdaemons.html' title='MallocLogFile, MacOSX &amp;amp; LaunchDaemons'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4548055528195703061</id><published>2009-03-04T10:23:00.000-08:00</published><updated>2009-03-04T10:27:02.022-08:00</updated><title type='text'>Modern Music</title><content type='html'>The Brits - Hmmm - Not my list of recommended music....&lt;br /&gt;Try listening to:&lt;br /&gt;&lt;br /&gt;1. The Killers (excellent)&lt;br /&gt;2. Editors (good)&lt;br /&gt;3. The View (acquired taste)&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4548055528195703061?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4548055528195703061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4548055528195703061' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4548055528195703061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4548055528195703061'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/03/modern-music.html' title='Modern Music'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-7624468395743113101</id><published>2009-02-23T03:20:00.000-08:00</published><updated>2009-02-23T03:27:02.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bosmere Products'/><category scheme='http://www.blogger.com/atom/ns#' term='Patio Set Covers'/><title type='text'>Bosmere Products Ltd</title><content type='html'>I don't normally do this, but about a month ago I sent the following letter to a company in the UK. I am still waiting for a reply. I am not expecting to receive one, nor do I expect a refund.&lt;br /&gt;&lt;br /&gt;So if anybody out there is googling for Patio Set Covers, and happens to bump into this post...&lt;br /&gt;&lt;br /&gt;We had bought a patio set cover for our patio tables and chairs in November 2008, and covered them up using this cover. By February 2009, the cover was falling apart. &lt;br /&gt;Letter follows.&lt;br /&gt;&lt;br /&gt;Customer Services&lt;br /&gt;Bosmere Products Ltd,&lt;br /&gt;Unit 5  Mitchell Way,&lt;br /&gt;Airport Service Road,&lt;br /&gt;Portsmouth,&lt;br /&gt;PO3 5PR,&lt;br /&gt;England.&lt;br /&gt;&lt;br /&gt;Dear Sir,&lt;br /&gt;&lt;br /&gt;I am writing to express my disappointment with the quality of your 6 seater circular patio set cover.&lt;br /&gt;&lt;br /&gt;I purchased this cover from Chinnor Garden Centre, Chinnor, Oxfordshire for £39.99 on 4th November 2008 while on a short trip to the UK from my home in France.&lt;br /&gt;&lt;br /&gt;Within a week the first of the supposedly heavy duty ties had broken – followed by the other 3 within the next month. Attempts to re-tie the broken cords were useless (they simply snapped again) and now the metal eyelets have ripped away from the plastic cover, now making it impossible to secure the cover even with heavy duty polypropylene rope which I purchased.&lt;br /&gt;&lt;br /&gt;On removing the cover, it is also apparent that large areas of the plastic coating on the inside of the cover have completely worn away and it is no longer waterproof.&lt;br /&gt;We do not live in the Outer Hebrides but south of the Loire valley in France, therefore it has most certainly not been exposed to unusually severe weather here!&lt;br /&gt;It is clear that this product is not fit for purpose – it is marketed as being top quality PVC backed polyester, secure in windy conditions and giving full winter protection – it is obvious that after just two and a half months use that it is none of these.&lt;br /&gt;&lt;br /&gt;As we live in France and very seldom travel to the UK we are unable to return the cover to the place where we purchased it. I would ask you therefore to refund the cost of the cover.&lt;br /&gt;&lt;br /&gt;Yours faithfully&lt;br /&gt;Mr Paul Beach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-7624468395743113101?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/7624468395743113101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=7624468395743113101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/7624468395743113101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/7624468395743113101'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/02/bosmere-products-ltd.html' title='Bosmere Products Ltd'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-1270051661986278812</id><published>2009-02-13T03:41:00.000-08:00</published><updated>2009-02-13T08:12:00.699-08:00</updated><title type='text'>Daily Telegraph Cryptic No 25851</title><content type='html'>I am a great fan of the Daily Telegraph Cryptic crossword, and have been doing, or attempting to do this crossword, just about every day since I was a student at University. &lt;br /&gt;&lt;br /&gt;I was introduced to it by my Grandmother many years ago, when stayed with her in Banbury. &lt;br /&gt;&lt;br /&gt;"We" (and I use We, advisedly) used to do the crossword when we had breakfast, usually my Grandmother doing the crossword and explaining how things worked, whilst every now and then I would have a eureka moment. Anyway enough digression. &lt;br /&gt;&lt;br /&gt;I found the following web site that specialises in helping people through the Telegraph Cryptic crossword in a way that is much more friendly than normal "specialist" cryptic sites. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://bigdave44.com/2009/02/13/dt-cryptic-no-25851/"&gt;Big Dave's Telegraph Crossword Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For those of you who don't know Libellule, is french for Dragonfly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-1270051661986278812?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/1270051661986278812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=1270051661986278812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1270051661986278812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1270051661986278812'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/02/daily-telegraph-cryptic-no-25851.html' title='Daily Telegraph Cryptic No 25851'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4598179433759941216</id><published>2009-01-30T04:04:00.000-08:00</published><updated>2009-01-30T04:09:09.853-08:00</updated><title type='text'>Memory Utilisation by the Firebird Classic Server</title><content type='html'>The following was posted by Dimitry Yemanov on the Firebird Development list in response to some questions about Memory Usage within Firebird (Classic)&lt;br /&gt;&lt;br /&gt;"Need some help understanding how memory allocation is done per process on Linux 1.5.5 CS. It's understandable that there is some amount of working memory needed to support fb process, plus per connection amount, plus cache depending on database page size and buffer count."&lt;br /&gt;&lt;br /&gt;Per process (independent) memory usage:&lt;br /&gt;- page buffers (40MB in your case)&lt;br /&gt;- metadata cache (cannot be predicted/controlled, depends on the schema complexity, especially number of interdependent PSQL objects)&lt;br /&gt;- sort buffers (turned off by default on Classic, see SortMemUpperLimit in firebird.conf)&lt;br /&gt;- undo log (cannot be predicted/controlled, wastes memory mostly for multiple batch updates in the same transaction)&lt;br /&gt;&lt;br /&gt;Shared memory usage (depends on other connections):&lt;br /&gt;   - lock table (starts with LockMemSize and auto-growing)&lt;br /&gt;   - event table (starts with EventMemSize and auto-growing)&lt;br /&gt;&lt;br /&gt;"What makes me wander is how concurrent user connection count affects memory utilization per process. Somehow the more users we have on the server - the bigger overhead is added per connection. When comparing mem utilization on same database having single connection and 55 for example - utilized memory delta increases by ~33MB. On server having 160 connections it's almost 2-3 times more. Is this lock manager related data? 30MB just for that?"&lt;br /&gt;&lt;br /&gt;The lock manager data is shared, but it's mapped into the address space of the every Classic process. I dunno whether the Linux tools include the mmap'ed memory into the counters you check or not. If so, it gets easy to explain: yes, this increase is caused by the lock table. You can draftly calculate the lock manager memory requirements by this formula:&lt;br /&gt;&lt;br /&gt;number of connections * number of page buffers * 100 bytes. &lt;br /&gt;&lt;br /&gt;The exact size could be found in the output of fb_lock_print (header section) at runtime. With your quite large (for Classic) page cache settings, the numbers should be nearly the same as you experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4598179433759941216?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4598179433759941216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4598179433759941216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4598179433759941216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4598179433759941216'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/01/memory-utilisation-by-firebird-classic.html' title='Memory Utilisation by the Firebird Classic Server'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-3617218671519567301</id><published>2009-01-30T03:58:00.000-08:00</published><updated>2009-01-30T04:02:41.725-08:00</updated><title type='text'>Firebird Trace and Audit Services</title><content type='html'>Posted by Vlad Horsun to the Firebird Development List.&lt;br /&gt;&lt;br /&gt;I am glad to introduce new Firebird facility, based on TraceAPI initially developed by Nickolay Samofatov and maintained and given to us by RedSoft (thanks!).&lt;br /&gt;&lt;br /&gt;Below is brief overview of what was done. It will be included into HEAD soon, I hope.&lt;br /&gt;&lt;br /&gt;Trace session - set of engine-generated events to trace and placement of trace output. Trace session also have its unique ID, optional name, state, flags, creator user and creation timestamp.&lt;br /&gt;&lt;br /&gt;List of available trace events is fixed and determined by the Firebird engine. List of events to trace, which data items to trace and placement of trace output is specified by trace configuration when trace session created.&lt;br /&gt;&lt;br /&gt;There are two kinds of trace sessions: system audit and user trace. System audit session is started by the engine itself and obtains configuration from the text file. This file name is set via new setting in firebird.conf and by default is "none", i.e. no system audit is configured. There may be only one system audit trace session, obviously. Configuration file contains list of traced events and placement of trace log(s). It is very flexible and allows to log different set of events &lt;br /&gt;for different databases into different log files. Example configuration file is attached.&lt;br /&gt;&lt;br /&gt;User trace session is managed by user via Services API. There are five new services for this purposes - to start, stop, suspend, resume trace session and to enlist all known trace sessions.&lt;br /&gt;&lt;br /&gt;When user application starts trace session it passed optional name and (mandatory) session configuration. Session configuration is a text. Rules and syntax the same as for configuration file mentioned above except of log placement. Engine stores output of user session in set of temporary files and deleted it automatically. After application starts user trace session it must read session's output from service (using isc_service_query). When application decide to stop its trace session it just do detach from service. Also user may manage (suspend\resume\stop) any own trace session. Administrator allowed to manage any trace session. &lt;br /&gt;&lt;br /&gt;If user trace session was created by ordinary user it will trace only connections established by this user.&lt;br /&gt;&lt;br /&gt;User trace sessions is not preserved when all Firebird processes is stopped. I.e. if user started trace session and Firebird SS or SC process is shutted down, this session is stopped and will not be restarted with new Firebird process. For CS this is not the case as user trace session can't live without connection with service manager and dedicated CS process.&lt;br /&gt;&lt;br /&gt;There are three main use cases:&lt;br /&gt;&lt;br /&gt;1. Constant audit of engine. &lt;br /&gt;This is served by system audit trace. &lt;br /&gt;&lt;br /&gt;2. On demand interactive trace of some (or all) activity in some (or all) databases. &lt;br /&gt;Application start user trace session and show traced events to user in real time on the screen. User may pause\continue trace and at last stop it.&lt;br /&gt;&lt;br /&gt;3. Aggregate of some activity for a relatively long period of time (few hours or even whole day) to analyse it later.&lt;br /&gt;Application start user trace session and save trace log in file (or set of files). Session must be stopped manually by the same application or by another one. &lt;br /&gt;&lt;br /&gt;Firebird's service manager utility (fbsvcmgr.exe) may be used to manage trace sessions. Later specialized console utility will be introduced (at least i plan to develop it soon after beta). Of course third party vendors are welcome to implement own GUI based monitoring and trace applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-3617218671519567301?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/3617218671519567301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=3617218671519567301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/3617218671519567301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/3617218671519567301'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2009/01/firebird-trace-and-audit-services.html' title='Firebird Trace and Audit Services'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-5049311502580963234</id><published>2008-09-09T00:56:00.000-07:00</published><updated>2008-09-09T03:47:54.457-07:00</updated><title type='text'>InterBase 2009 comes with multicore support</title><content type='html'>I have just read the following news article on SDTimes:&lt;br /&gt;&lt;a href="http://www.sdtimes.com/INTERBASE_2009_COMES_WITH_MULTICORE_SUPPORT/About_DATABASES_and_MULTICORE_and_CODEGEAR_and_EMBARCADERO/32828"&gt;InterBase 2009 comes with multicore support&lt;/a&gt;&lt;br /&gt;A couple of aspects to this story seeme a little peculiar, while some comments require some clarification.&lt;br /&gt;&lt;br /&gt;"Thus the update for InterBase 2009 is relatively subdued" &lt;br /&gt;&lt;br /&gt;correct, I do not see any major new features in this new version, however a couple of new features highlighted are &lt;br /&gt;&lt;br /&gt;"such as over-the-wire encryption and AES as an encryption scheme".&lt;br /&gt;&lt;br /&gt;If you want over the wire encryption for Firebird you could use Zebedee. There have been a number of papers re. this in the past. However this is something that could be implemented in Firebird fairly easily if we so wished.&lt;br /&gt;&lt;br /&gt;In terms of database encryption there is code to allow it now, however the original implementation was not reliable. We did put together a more detailed proposal, but after some lengthy discussions it was decided that such functionality was going to be too complicated for the majority of users, and most of them didn't want it any way.&lt;br /&gt;&lt;br /&gt;I do have trouble working out what &lt;br /&gt;&lt;br /&gt;"The biggest change, perhaps, is the removal of any non-symmetric multiprocessing (SMP) compatible versions of the database. All versions of InterBase will now be able to use multiple processors and cores." &lt;br /&gt;&lt;br /&gt;means.. CodeGear have been stating that InterBase was SMP enabled since InterBase 7.0. So what does this mean? Was InterBase non SMP capable/SMP friendly on some platforms? Was there code that wasn't SMP enabled? Has the code been cleaned up, so that all the old platforms have been removed. Or is it just a licensing issue where the new SMP license now supports up to 8 cores/CPUs, while previously you had to buy extra CPU licenses?&lt;br /&gt;&lt;br /&gt;One particular quote was very confusing &lt;br /&gt;&lt;br /&gt;"For the existing open-source Firebird database, which is based on InterBase, these changes won't trickle down; that free database does not include SMP, disaster recovery or high availability features."&lt;br /&gt;&lt;br /&gt;Firebird was originally based on the open sourced version of InterBase 6.0, but the code bases are now quite different after 8 years of independent development work. So to state that Firebird is based on InterBase, although this is technically correct, it is a little disingenuous.&lt;br /&gt;&lt;br /&gt;Stating that changes in InterBase will not trickle down to Firebird is correct. InterBase as per Inprise/Borland/CodeGear/Embarcadero is a closed source database. After the code was originally open sourced on SourceForge by Borland, it was forked and Firebird was created. InterBase was then "closed sourced" by Borland, and development work has continued on InterBase in a closed source manner. No code or feature at any time has come from InterBase to Firebird. Although it is possible that Firebird code may have made it into InterBase. However we have no way of verifying that.&lt;br /&gt;&lt;br /&gt;In terms of SMP, by re-introducing the process based Classic Arhitecture, Firebird does support SMP. However a process based architecture isn't multi-threaded. That's an issue that's being addressed in Firebird V2.5 (SuperClassic) and Firebird 3.0.&lt;br /&gt;&lt;br /&gt;I assume by "Disaster Recovery" this refers to "Journaling with Write Ahead Logging (WAL)" something that has not been implemented in Firebird. I am unsure what the other "High Availability" features are.&lt;br /&gt;&lt;br /&gt;Finally&lt;br /&gt;&lt;br /&gt;"In October, he said that InterBase ToGo will be made available. Normally, InterBase has a memory footprint of around 100MB. ToGo will be slimmed to around 3MB"&lt;br /&gt;&lt;br /&gt;I am lost on this one. I am sure by this he means a disk footprint, not memory. And most of the size of the normal disk footprint is taken up by a stupid installer (imho) and docs. My assumption is that InterBase ToGo is effectively a variant on Firebird Embedded, but since ToGo will not be available until October it is difficult to comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-5049311502580963234?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/5049311502580963234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=5049311502580963234' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5049311502580963234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5049311502580963234'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/09/interbase-2009-comes-with-multicore.html' title='InterBase 2009 comes with multicore support'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-8730201658675259333</id><published>2008-09-04T02:03:00.001-07:00</published><updated>2008-09-04T02:31:33.440-07:00</updated><title type='text'>Solaris 10, Firebird SuperServer and the Service Management Facility</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I recently released Firebird V2.04 SuperServer for Solaris 10. This new build uses the Solaris 10 Service Management Facility to stop/start Firebird. Here are some notes on how it works.&lt;br /&gt;I created the following manifest file (it can be found in /opt/firebird/ as gds_db-tcp.xml):&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version='1.0'?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;    Service manifest for firebird &lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;service_bundle type='manifest' name='firebird'&amp;gt;&lt;br /&gt;&amp;lt;service&lt;br /&gt; name='application/firebird'&lt;br /&gt; type='service'&lt;br /&gt; version='1'&amp;gt;&lt;br /&gt; &amp;lt;create_default_instance enabled='true' /&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;exec_method&lt;br /&gt;  type='method'&lt;br /&gt;  name='start'&lt;br /&gt;  exec='/opt/firebird/bin/fbmgr.bin -start'&lt;br /&gt;  timeout_seconds='10'&amp;gt;&lt;br /&gt;  &amp;lt;method_context&amp;gt;&lt;br /&gt;   &amp;lt;method_credential user='firebird' group='firebird' /&amp;gt;&lt;br /&gt;  &amp;lt;/method_context&amp;gt;&lt;br /&gt; &amp;lt;/exec_method&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;exec_method&lt;br /&gt;  type='method'&lt;br /&gt;  name='stop'&lt;br /&gt;  exec='/opt/firebird/bin/fbmgr.bin -stop'&lt;br /&gt;  timeout_seconds='10'&amp;gt;&lt;br /&gt;  &amp;lt;method_context&amp;gt;&lt;br /&gt;   &amp;lt;method_credential user='firebird' group='firebird' /&amp;gt;&lt;br /&gt;  &amp;lt;/method_context&amp;gt;&lt;br /&gt; &amp;lt;/exec_method&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;template&amp;gt;&lt;br /&gt;  &amp;lt;common_name&amp;gt;&lt;br /&gt;   &amp;lt;loctext xml:lang='C'&amp;gt;&lt;br /&gt;   Firebird &lt;br /&gt;   &amp;lt;/loctext&amp;gt;&lt;br /&gt;  &amp;lt;/common_name&amp;gt;&lt;br /&gt; &amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;/service&amp;gt;&lt;br /&gt;&amp;lt;/service_bundle&amp;gt;&lt;br /&gt;&lt;br /&gt;This manifest file is automatically installed by the pkg installer.&lt;br /&gt;You can manually stop and start firebird using the following commands, instead of using fbmgr.bin&lt;br /&gt;&lt;br /&gt;svcadm enable svc:/application/firebird:default&lt;br /&gt;svcadm disable svc:/application/firebird:default&lt;br /&gt;&lt;br /&gt;You can verify whether the Firebird "service" is running by using the following:&lt;br /&gt;&lt;br /&gt;svcs -a | grep firebird&lt;br /&gt;&lt;br /&gt;Supposedly the new Service Management Facility provides automatic recovery from software and hardware errors, so theoretically SuperServer on Solaris 10 no longer has need of the Firebird Guardian, since SMF should do the same job that the Guardian was designed to do. This is going to need some testing ....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/create_default_instance&gt;&lt;/service&gt;&lt;/service_bundle&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-8730201658675259333?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/8730201658675259333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=8730201658675259333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/8730201658675259333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/8730201658675259333'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/09/solaris-10-firebird-superserver-and.html' title='Solaris 10, Firebird SuperServer and the Service Management Facility'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-2208314188209161010</id><published>2008-07-21T03:46:00.000-07:00</published><updated>2008-07-21T03:52:35.044-07:00</updated><title type='text'>Solaris 10 and iscsi</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Seems that applying all of the patches discussed previously has broken my version of Solaris, as it now seems to have problems booting.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;It seems to hang during the boot cycle, so I had to do some hunting to try and find out the cause.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Boooting with a -v (verbose) shows that the system is hanging in iscsi.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;After some googling it seems the only way to fix this, so you can get in is to do the following..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;1. Boot using -m milestone=none&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;2. Login as root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;3. svcadm enable -r filesystem/minimal&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;4. svcadm enable -r filesystem/local&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;5. cd /etc/iscsi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;6. mv iscsi_v1.dbc iscsi_v1.dbc.bad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;7. reboot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Now you can get in, I suggest you go and install the latest iscsi path from sunsolve:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;Patch number 119091 for x86 Solaris.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;reboot and hopefully all will be well.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-2208314188209161010?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/2208314188209161010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=2208314188209161010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/2208314188209161010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/2208314188209161010'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/07/solaris-10-and-iscsi.html' title='Solaris 10 and iscsi'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-5026070328555455312</id><published>2008-07-02T05:25:00.000-07:00</published><updated>2008-07-04T04:51:56.965-07:00</updated><title type='text'>Solaris and the 256 File Descriptor Problem</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Some of you reading this may remember that back when InterBase 6.0 was released on Solaris we ran into a fundamental problem on Solaris. It seems that since 1992 there has been an open bug documenting Solaris' file descriptor problem: "&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;32-bit stdio routines should support file descriptors &gt;255."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Bug id:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" href="http://bugs.opensolaris.org/bugdatabase/printableBug.do?bug_id=1085341"&gt;&lt;span&gt;1085341&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;When this issue was discovered, we chose to use SFIO, a stdio variant from AT&amp;amp;T&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Comments on this issue can be found in jrd/common.h which forces a superserver build to use our own internal stdio.h found in extern/SfIO/include.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Well it looks like in Solaris 10 Sun have finally fixed the issue.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;More details can be found in the article entitled:&lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" href="http://developers.sun.com/solaris/articles/stdio_256.html"&gt;Solaris OS Solutions to 32-Bit stdio's 256 File-Descriptors Limitation&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; by Giri Mandalika dated May 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Suffice it say - the bug has been fixed, but in a fairly typical Sun way.... the fix is more complicated than it should be... why they didn't just change the char to a short and be done with it I really don't know.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Anyway it should be possible on Solaris 10 to use this fix instead of our "own" implementation of stdio.h, just by adding a couple of lines to gds.cpp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;e.g.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;#ifdef SOLARIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;#include &amp;lt;stdio_ext.h&amp;gt;&lt;/span&gt;&lt;stdio_ext.h&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;after including &lt;/span&gt;&lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;and then adding the following at around about line 3535 (Firebird 2.0.4)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;#ifdef SOLARIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;enable_extended_FILE_stdio (-1, -1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;#endif&lt;br /&gt;&lt;br /&gt;Hmm that seems to be a nice simple solution, except that its always more complicated than that.&lt;br /&gt;It seems that this fix is only available from later releases of Solaris 10, so if you have a version of Solaris from &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;Solaris 10 3/05 through Solaris 10 11/06  you will need to install just 3 patches...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Well no - thats not the case. I had to do the following to get this to work...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Download and install the following patches:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;1. 118855-36&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;2. 118919-21&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;3. 119255-53&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;4. 120273-21&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;5. 123840-04&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;6. 127756-01&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;7. 125504-02&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;8. 122661-08&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;9. 125548-02&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;10. 126420-01&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;11. 126424-03&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;And then finally in single user mode, followed by a reconfigure reboot:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;To boot Solaris x86 in single user mode, requires some fun and games too...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;At the GRUB menu, type 'e' before it times out and takes the default boot option.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Scroll to the default multiuser boot line, then type 'e' egain.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;This will bring you in to edit mode. Add a ' -s' at the end of the line.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Then type 'b' to boot.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;12. 120012-14&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Install this patch - then reconfigure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;At the GRUB menu, type 'e' before it times out and takes the default boot option.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt; Scroll to the default multiuser boot line, then type 'e' egain.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt; This will bring you in to edit mode. Add a ' -r' at the end of the line.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Then type 'b' to boot.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;I am not sure that we can ask Solaris users of Firebird if they do not have the fix already installed to go through this, so we will have a look at keeping our own SfIO. However currently that will not compile using gcc 4.2.1 and thats something else we need to try and fix.&lt;br /&gt;&lt;br /&gt;Addendum:&lt;br /&gt;sftp is now broken - so you need to add two more patches to the list above&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;13. 119253-26&lt;br /&gt;14. 124629-07&lt;br /&gt;&lt;em style="font-family: georgia;"&gt;&lt;/em&gt;&lt;/stdio.h&gt;&lt;/stdio_ext.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-5026070328555455312?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/5026070328555455312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=5026070328555455312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5026070328555455312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/5026070328555455312'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/07/solaris-and-256-file-descriptor-problem.html' title='Solaris and the 256 File Descriptor Problem'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-6885017321140851913</id><published>2008-06-05T03:00:00.000-07:00</published><updated>2008-06-05T03:06:30.742-07:00</updated><title type='text'>MacOSX and stdin,stdout,stderr</title><content type='html'>&lt;span style="font-family: georgia;"&gt;I am in the process of porting a friends software to MacOSX. Don't ask what it does yet, all will be revealed soon. The code compiles quite happily on Solaris and Linux, but fails with the following error on MacOSX...&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;dbFile.c: In function ‘_setLogfile’:&lt;br /&gt;dbFile.c:243: error: invalid lvalue in assignment&lt;br /&gt;dbFile.c:244: error: invalid lvalue in assignment&lt;br /&gt;dbFile.c: In function ‘fieldFillGen’:&lt;br /&gt;&lt;br /&gt;I know what the problem is -&lt;br /&gt;Seems on MacOSX 10.4 and below:&lt;br /&gt;stdin, stdout, and stderr are addresses of a FILE rather than a FILE*&lt;br /&gt;On MacOSX 10.5 they are FILE*&lt;br /&gt;&lt;br /&gt;So depending on the OS version you are targeting will determine whether the code compiles or not. The issue goes back to the way FreeBSD originally implemented this in stdio.h which is the base for MacOSX, and it looks like it finally became "correct" i.e. portable and adhering to other implementations in MacOSX 10.5&lt;br /&gt;A quick look at /usr/include/stdio.h confirms this...&lt;br /&gt;the FILE* appears within the ifdef for _DARWIN_UNIX_03&lt;br /&gt;&lt;br /&gt;__BEGIN_DECLS&lt;br /&gt;#if __DARWIN_UNIX03&lt;br /&gt;extern FILE *__stdinp;&lt;br /&gt;extern FILE *__stdoutp;&lt;br /&gt;extern FILE *__stderrp;&lt;br /&gt;#else /* !__DARWIN_UNIX03 */&lt;br /&gt;extern FILE __sF[];&lt;br /&gt;#endif /* __DARWIN_UNIX03 */&lt;br /&gt;__END_DECLS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So I need to come up with a simple workaround for what was originally valid code on other operating systems:&lt;br /&gt;&lt;br /&gt;stderr = wk;&lt;br /&gt;stdout = wk;&lt;br /&gt;&lt;br /&gt;the following seems to work:&lt;br /&gt;&lt;br /&gt;dup2(wk-&gt;_file ,STDERR_FILENO);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;dup2(wk-&gt;_file ,STDOUT_FILENO);&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-6885017321140851913?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/6885017321140851913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=6885017321140851913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6885017321140851913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6885017321140851913'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/06/macosx-and-stdinstdoutstderr.html' title='MacOSX and stdin,stdout,stderr'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-1638601097932326115</id><published>2008-06-04T05:04:00.000-07:00</published><updated>2008-06-04T05:14:43.888-07:00</updated><title type='text'>Standard delete v's Firebird delete</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Alex and I have just committed a slew of changes to the code in Firebird 2.1.&lt;br /&gt;This all started when we did the 32 bit builds for Firebird on MacOSX.&lt;br /&gt;&lt;br /&gt;We found that in remote we would get asserts trying to create a database. On deeper and further investigation over a period of a couple of weeks we realised that in some cases the standard delete was being called instead of the redefined version in Firebird i.e. it invoked free() instead of&lt;br /&gt;MemoryPool::globalFree(). After some extensive googling  we found other people have also run into similar problems.&lt;br /&gt;&lt;br /&gt;As a solution it   was suggested to use:&lt;br /&gt;1. Use switches -fvisibility=hidden and -fvisibility-inlines-hidden together.&lt;br /&gt;2. Use switch -fvisibility=hidden and __attribute__((always_inline)).&lt;br /&gt;&lt;br /&gt;Trying with second combination we found that we sometimes got (depending on the version of gcc) an error:&lt;br /&gt;sorry, unimplemented: inlining failed in call to 'void operator delete(void*) throw ()'.&lt;br /&gt;&lt;br /&gt;It seems that  without -fvisibility=hidden and __attribute__((always_inline)) gcc is&lt;br /&gt;using non-inline body for operator delete. And is randomly using the wrong body, the one from the standard &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;operator &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;delete.&lt;br /&gt;&lt;br /&gt;The first combination helps to avoid this bug - but any entrypoint, which is to be exported, now has to be marked with __attribute__((visibility="default")).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-1638601097932326115?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/1638601097932326115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=1638601097932326115' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1638601097932326115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/1638601097932326115'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/06/standard-delete-vs-firebird-delete.html' title='Standard delete v&apos;s Firebird delete'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-6713053554753170262</id><published>2008-04-21T03:00:00.000-07:00</published><updated>2008-04-21T03:39:16.573-07:00</updated><title type='text'>64bit PPC build for MacOSX</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Someone asked me why there wasn't a 64bit version of Firebird for MacOS powerpc... so I tried a build on the powerpc MacOSX box we have...&lt;br /&gt;sw_vers -productVersion = 10.4.11&lt;br /&gt;Build fails when we try to build config_root.cpp.&lt;br /&gt;&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:272: error: typedef 'ExceptionHandlerProcPtr' is initialized (use __typeof__ instead)&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:272: error: 'ExceptionInformation' was not declared in this scope&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:272: error: 'theException' was not declared in this scope&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:306: error: 'ExceptionInformation' was not declared in this scope&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:306: error: 'theException' was not declared in this scope&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:307: error: expected primary-expression before 'userUPP'&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:307: error: initializer expression list treated as compound expression&lt;br /&gt;/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/fp.h:1338: error: 'SIGDIGLEN' was not declared in this scope&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some googling explains what the problem is. Seems MacOSX is 10.4 is not 100% 64bit friendly and the carbon framework will not support a full 64bit build until MacOSX 10.5.&lt;br /&gt;&lt;br /&gt;We use the carbon framework in a few, but very specific places, mainly to load UDF libraries as bundles and also the fbintl library.&lt;br /&gt;&lt;br /&gt;So....&lt;br /&gt;&lt;br /&gt;I either need to upgrade our powerpc Mac to MacOSX 10.5 to do the build...&lt;br /&gt;or&lt;br /&gt;Anybody out there got a powerpc Mac running MacOSX 10.5 that I could use to check the build?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-6713053554753170262?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/6713053554753170262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=6713053554753170262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6713053554753170262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/6713053554753170262'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/04/64bit-ppc-build-for-macosx.html' title='64bit PPC build for MacOSX'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-8610296558267065203</id><published>2008-04-08T07:23:00.000-07:00</published><updated>2008-04-08T07:30:55.861-07:00</updated><title type='text'>Editline, Curses and Solaris AMD64</title><content type='html'>&lt;span style="font-family: georgia;"&gt;We finally solved the last major problem in the Firebird 2.0x build for Solaris 10 AMD 64bit. Whenever we tried to include editline in the build isql_static would coredump. We tracked the problem down to the following:&lt;br /&gt;&lt;br /&gt;Seems there is a problem in the Solaris' native implementation of libcurses,  the function tgetstr() returns a bad pointer (non-NULL, but out of the process space). This means that until Sun fix it we can't use libcurses to link with editline on Solaris 64bit AMD.&lt;br /&gt;&lt;br /&gt;So we came up with a solution...&lt;br /&gt;We downloaded and built ncurses... (5.5) then copied libncurses.a to gen/firebird/lib along with the normal editline.a&lt;br /&gt;Then adjusted make.defaults to remove references to -lcurses for LINK_LIBS and STATICLINK_LIBS and added -lncurses.&lt;br /&gt;&lt;br /&gt;We now have a succesful build that seems to work properly. I hope to put the 64bit Solaris AMD builds up in the firebird prerelease area for testing purposes, then commit the changes made to the code base. Then wen 2.04 is ready to be released will create proper versions for full release.&lt;br /&gt;&lt;br /&gt;Hope that somebody out there finds this useful, or at least the builds anyway.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-8610296558267065203?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/8610296558267065203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=8610296558267065203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/8610296558267065203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/8610296558267065203'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/04/editline-curses-and-solaris-amd64.html' title='Editline, Curses and Solaris AMD64'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-7362010154753960653</id><published>2008-04-07T05:51:00.000-07:00</published><updated>2008-04-07T05:58:17.540-07:00</updated><title type='text'>Wrongly Named libfbclient on Solaris</title><content type='html'>&lt;span style="font-family: georgia;"&gt;There is a small problem with the currently shipping versions of Firebird 2.0.3 for Solaris.&lt;br /&gt;The problem doesn't affect the general workings of Firebird, but if you try to link with the libfbclient library using your own program, you will run into a problem where you will consistently get the following error:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new,monospace;"&gt;&lt;span style="font-family: georgia;"&gt;ld: fatal: library -lfbclient:  not found&lt;br /&gt;&lt;br /&gt;The problem is due to a misnamed libfbclient.so in /opt/firebird/lib&lt;br /&gt;&lt;br /&gt;To correct:&lt;br /&gt;cd /opt/firebird/lib&lt;br /&gt;rm libfbclient.so&lt;br /&gt;ln -s libfbclient.so.2 libfbclient.so&lt;br /&gt;&lt;br /&gt;This has already been corrected in CVS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-7362010154753960653?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/7362010154753960653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=7362010154753960653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/7362010154753960653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/7362010154753960653'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/04/wrongly-named-libfbclient-on-solaris.html' title='Wrongly Named libfbclient on Solaris'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-9036268660282975451</id><published>2008-04-01T02:33:00.000-07:00</published><updated>2008-04-02T03:33:52.448-07:00</updated><title type='text'>64bit Firebird for Solaris 10 AMD64</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Looks like having a 64bit build of Firebird on Solaris 10 AMD64 is going to be a non-starter.&lt;br /&gt;Alex and I have done all the hard work, and we have a build (currently without editline, since thats a problem in itself), but when we try and run isql created by the build we get the following:&lt;br /&gt;&lt;br /&gt;ld.so.1: ./isql: fatal: relocation error: R_AMD^$_32S:&lt;br /&gt;file /usr/lib/64/libfbembed.so.2: symbol (unknown): vakue 0xfffffd7ffee00000&lt;br /&gt;does not fit&lt;br /&gt;&lt;br /&gt;or in debug mode trying to run isql from the build directly:&lt;br /&gt;ld.so.1: isql: fatal: relocation error: R_AMD64_PC32&lt;br /&gt;file /home/pbeach/firebird64/gen/firebird/lib/libfbembed.so.2:&lt;br /&gt;symbol main: value 0x2800155d494 does not fit.&lt;br /&gt;&lt;br /&gt;A bit of googling finds this:&lt;br /&gt;&lt;br /&gt;Bug ID 5102797&lt;br /&gt;&lt;a href="http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=a68c8de187c30929fb79755edd017?bug_id=5102797"&gt;Synopsis AMD64: static relocation in dynamic library fails&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you read the details, seems the bug has been around since 15th Sept 2004&lt;br /&gt;and because of its nature, there are no plans to fix it until Solaris 11.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Addendum: 2nd April 2007&lt;/span&gt;&lt;br /&gt;Looks like we have found the problem.&lt;br /&gt;LIB_LINK_OPTIONS in the prefix build file was -G&lt;br /&gt;-G on Solaris should tell the linker to create a shared library&lt;br /&gt;However because we are using gcc, something somewhere was getting confused.&lt;br /&gt;If we pass -fPIC and -shared instead the problem is resolved.&lt;br /&gt;&lt;br /&gt;From the gcc manaual:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-shared&lt;br /&gt;&lt;br /&gt;Produce a shared object which can then be linked with other objects to form an executable.  Not all systems support this option.  For predictable results, you must also specify the same set of options that were used to generate code (&lt;samp&gt;&lt;span class="option"&gt;-fpic&lt;/span&gt;&lt;/samp&gt;, &lt;samp&gt;&lt;span class="option"&gt;-fPIC&lt;/span&gt;&lt;/samp&gt;, or model suboptions) when you specify this option&lt;br /&gt;&lt;br /&gt;On some systems, `&lt;samp&gt;&lt;span class="samp"&gt;gcc -shared&lt;/span&gt;&lt;/samp&gt;' needs to build supplementary stub code for constructors to work.  On multi-libbed systems, `&lt;samp&gt;&lt;span class="samp"&gt;gcc -shared&lt;/span&gt;&lt;/samp&gt;' must select the correct support libraries to link against.  Failing to supply the correct flags may lead to subtle defects.  Supplying them in cases where they are not necessary is innocuous.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-9036268660282975451?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/9036268660282975451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=9036268660282975451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/9036268660282975451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/9036268660282975451'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/04/64bit-firebird-for-solaris-10-amd64.html' title='64bit Firebird for Solaris 10 AMD64'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4174039547583189344</id><published>2008-03-28T04:37:00.000-07:00</published><updated>2008-03-28T04:54:51.722-07:00</updated><title type='text'>FreeAdhocUDF for MacOSX</title><content type='html'>&lt;span style="font-family:georgia;"&gt;I&lt;span style="font-family:georgia;"&gt; have just finished porting FreeAdhocUDF to MacOSX and sent the Makefiles, code, plus 32bit UDF libraries for Firebird 1.5.5 and Firebird 2.x to the FreeAdhocUDF types to be included in the distribution.&lt;br /&gt;&lt;br /&gt;Issues that you might need to be aware of.&lt;br /&gt;1. In Firebird 1.5.5 we don't ship libib_util.dylib, and even if we did you wouldn't be able to link to it. It seems that Firebird 1.5.5's installer doesn't copy the library to the Framework. This has now been fixed for the next release. Secondly the library was being built as a bundle. All Firebird UDF's need to be created as bundles to work on MacOSX. You can't link a bundle to a bundle. This has also been fixed.&lt;br /&gt;2. In Firebird 1.5.5 you must remove any extension from the UDF library (e.g dylib) to get it to work. So for example FreeAdhocUDF.dylib needs to be renamed to FreeAdhocUDF. This bug has been fixed in flu.cpp for the next version.&lt;br /&gt;&lt;br /&gt;Firebird 2.x does not have any of these problems :-)&lt;br /&gt;&lt;br /&gt;In compiling FreeAdhocUDF for MacOSX, it has to be noted that MacOSX has no idea of sysinfo.h, so I had to add a chunk of code to handle the getting of a MAC address, and to get the random_info/randomness for GUIDs. This does seem to work nicely now.&lt;br /&gt;&lt;br /&gt;The FreeAdhocUDF libraries I have provided are 32bit intel for Firebird 1.5.5 and Firebird 2.x, if you want to build ppc libraries, or 64bit libraries enjoy. If you have problems, let me know.&lt;br /&gt;&lt;br /&gt;On ppc you "might" have to add the following to the Makefile&lt;br /&gt;i.e. change&lt;br /&gt;LDFLAGS=$(CF) $(LIB) -bundle -flat_namespace -undefined suppress to&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-family:georgia;"&gt;LDFLAGS=$(CF) $(LIB) -bundle -flat_namespace -undefined suppress /usr/sys/bundle.o&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4174039547583189344?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4174039547583189344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4174039547583189344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4174039547583189344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4174039547583189344'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/03/freeadhocudf-for-macosx.html' title='FreeAdhocUDF for MacOSX'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4763943956627878425</id><published>2008-03-21T08:06:00.000-07:00</published><updated>2008-03-21T08:26:08.285-07:00</updated><title type='text'>Exceptions, gcc and Solaris 10 AMD 64bit</title><content type='html'>&lt;span style="font-family: georgia;"&gt;For a little while now Alex and I have been battling a problem on Solaris 10 64bit AMD.  We have been trying to port Firebird 2.0x to  64bit Solaris. However after fixing a few issues, e.g. defining the platform etc, we found that isql_static would core dump on trying to create a database. This is where the fun begins...&lt;br /&gt;&lt;br /&gt;The default debugger for gcc shipped with Solaris 10 can't handle 64bit applications. Solution - build your own from a later version. At least this way we can now step through the Firebird code and try to see whats happening..&lt;br /&gt;&lt;br /&gt;After some careful debugging sessions we find that Firebird seems to be OK, when you try to create a database, Firebird first trys to open it as an existing database, if it can't find an existing database we throw an internal exception and go on to create it.&lt;br /&gt;&lt;br /&gt;The problem is isql_static is occurring when the exception is thrown...&lt;br /&gt;&lt;br /&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;0x0000000000488385 in __EH_FRAME_BEGIN__ ()&lt;br /&gt;&lt;br /&gt;(gdb) bt&lt;br /&gt;#0  0x0000000000488385 in __EH_FRAME_BEGIN__ ()&lt;br /&gt;#1  0xfffffd7ffedacf3c in _Unwind_RaiseException_Body () from /lib/64/libc.so.1&lt;br /&gt;#2  0xfffffd7ffedad129 in _Unwind_RaiseException () from /lib/64/libc.so.1&lt;br /&gt;#3  0xfffffd7ffef3c71e in __cxa_throw (obj=0x1, tinfo=0x1, dest=0x474e5543432b2b00)&lt;br /&gt;    at /builds/sfw10-gate/usr/src/cmd/gcc/gcc-3.4.3/libstdc++-v3/libsupc++/eh_throw.cc:75&lt;br /&gt;#4  0x000000000056510b in Firebird::status_exception::raise (status_vector=0x8d19e0)&lt;br /&gt;    at ../src/common/fb_exception.cpp:197&lt;br /&gt;#5  0x0000000000694137 in ERR_punt () at ../src/jrd/err.cpp:562&lt;br /&gt;#6  0x0000000000693ced in ERR_post (status=335544344) at ../src/jrd/err.cpp:441&lt;br /&gt;#7  0x00000000005c66d4 in PIO_open (dbb=0xfffffd7ffec29050, string=@0xfffffd7fffdec9e0,&lt;br /&gt;    trace_flag=false, connection=0x0, file_name=@0xfffffd7fffdeca20, share_delete=false)&lt;br /&gt;    at ../src/jrd/os/posix/unix.cpp:646&lt;br /&gt;&lt;br /&gt;So Firebird looks OK, i.e. its doing what it should do, however Solaris is causing a crash dump on the exception.&lt;br /&gt;&lt;br /&gt;Some more detective work uncovered the following:&lt;br /&gt;&lt;br /&gt;The problem is caused by the use of the -lc flag which was explicitly added to linker command line by autoconf.&lt;br /&gt;&lt;br /&gt;Because we always use g++/gcc as linker, there is no need for us to need add in libc explicitly - it's done by compiler itself when it invokes ld. But autoconf seems to be doing it anyway.&lt;br /&gt;&lt;br /&gt;When it is added to the command line,  libc (Solaris native library) then happens to be added to ld's command line before libgcc_s where we would find gcc's own exception support library. If this happens any call to functions that have the same name, that happen to be present in both libraries, will go to libc, not libgcc_s.&lt;br /&gt;&lt;br /&gt;There is at least one such function - Unwind_RaiseException(), which is called by g++ generated&lt;br /&gt;code when exception is thrown. But instead of libgcc_s::Unwind_RaiseException() libc::Unwind_RaiseException() is called, but not with the parameters the Solaris native function expects - cue core dump.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;br /&gt;Don't use -lc&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4763943956627878425?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4763943956627878425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4763943956627878425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4763943956627878425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4763943956627878425'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/03/exceptions-gcc-and-solaris-10-amd-64bit.html' title='Exceptions, gcc and Solaris 10 AMD 64bit'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8986782557879316238.post-4574840872112630218</id><published>2008-03-13T02:13:00.000-07:00</published><updated>2008-03-13T02:21:21.769-07:00</updated><title type='text'>Where is libfbclient.dylib on MacOSX?</title><content type='html'>&lt;span style="font-family: georgia;"&gt;There was a post to the Firebird Support list, asking how you link Qt to the libfbclient.dylib on MacOSX Firebird SuperServer. The problem being, that libfbclient.dylib is not "shipped" as part of the MacOSX framework... heres the detailed answer on how it works.&lt;br /&gt;&lt;br /&gt;Firebird on MacOSX is delivered as a framework,&lt;br /&gt;&lt;br /&gt;For more information on a frameworks look on : http://developer.apple.com&lt;br /&gt;&lt;br /&gt;In a nutshell - "A framework is a hierarchical directory that encapsulates shared resources, such as a dynamic shared library, nib files, image files, localized strings, header files, and reference documentation in a single package. Multiple applications can use all of these resources simultaneously. The system  loads them into memory as needed and shares the one copy of the resource among all applications whenever possible."&lt;br /&gt;&lt;br /&gt;This is the "best" way to deliver an application on MacOSX.&lt;br /&gt;&lt;br /&gt;However to do this the main dylibs (shared libraries) that run Firebird become part of the framework itself.&lt;br /&gt;&lt;br /&gt;The main dylib that drives Classic is libfbembed, for SuperServer its libfbclient.&lt;br /&gt;&lt;br /&gt;With Classic we ship both libfbembed and libfbclient, libfbclient as a separate dylib can be found in the libraries directory.&lt;br /&gt;&lt;br /&gt;for SuperServer we ship libfbclient&lt;br /&gt;&lt;br /&gt;However libfbembed (Classic) and libfbclient (SuperServer) are not directly obvious as shared libraries, i.e. if you look for them by that name with a dylib extension you are not going to find them. However if you took a close look at postfix.darwin in the Firebird source builds/posix (this is the code that sets up the framework) you will find that they become Firebird.framework/Firebird which is a link to Firebird.framework/Versions/Current/Firebird.&lt;br /&gt;&lt;br /&gt;Where &lt;/span&gt;&lt;span style="font-family: georgia;"&gt;Firebird.framework/Firebird is libfbembed.dylib for Classic and&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;Firebird.framework/Firebird is libfbclient.dylib for SuperServer&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8986782557879316238-4574840872112630218?l=paulbeachsblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://paulbeachsblog.blogspot.com/feeds/4574840872112630218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=8986782557879316238&amp;postID=4574840872112630218' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4574840872112630218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8986782557879316238/posts/default/4574840872112630218'/><link rel='alternate' type='text/html' href='http://paulbeachsblog.blogspot.com/2008/03/where-is-libfbclientdylib-on-macosx.html' title='Where is libfbclient.dylib on MacOSX?'/><author><name>Paul Beach</name><uri>http://www.blogger.com/profile/01887777727779537695</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10887361026289466767'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry></feed>