Bug #36403 | Compiling Falcon on Solaris fails due to dtrace | ||
---|---|---|---|
Submitted: | 29 Apr 2008 15:55 | Modified: | 30 Sep 2008 19:24 |
Reporter: | Hakan Küçükyılmaz | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Falcon storage engine | Severity: | S1 (Critical) |
Version: | 6.0, 6.0-falcon-team | OS: | Solaris |
Assigned to: | Olav Sandstå | CPU Architecture: | Any |
[29 Apr 2008 15:55]
Hakan Küçükyılmaz
[29 Apr 2008 19:11]
Hakan Küçükyılmaz
Providing --disable-dtrace does not help either; compilation still fails due to dtrace.
[30 Apr 2008 20:24]
Olav Sandstaa
Here is some information about why this happens. 1. When I run configure on Solaris it seems like the default for dTrace support is that this is disabled(?) At least when looking into the file includes/my_config.h the following is specified relating to dTrace: /* Enables DTRACE Support */ /* #undef HAVE_DTRACE */ Is this a correct assumption? That dTrace support is off by default? 2. In sql/mysql_priv.h the following code: #ifdef HAVE_DTRACE #define _DTRACE_VERSION 1 #endif #include "probes.h" seems to be used for enabling dTrace support if HAVE_DTRACE is defined (which is not defined as shown in step 1 above). So this code does not enable dTrace by setting _DTRACE_VERSION. 3. sql/probes.h contains the method signatures for the dTrace probes. If _DTRACE_VERSION is defined, the dTrace method signatures will be declared: #if _DTRACE_VERSION #define MYSQL_DELETE_END() \ __dtrace_mysql___delete_end() In my compilations HAVA_DTRACE is not defined, and due to this _DTRACE_VERSION is not defined by the code in sql/mysql_priv.h. Still the dTrace methods get included in the compilation due to _DTRACE_VERSION is defined anyway due to the file /usr/include/sys/feature_tests.h . So basically, not mather what configure or include/my_config.h decides to do with HAVE_DTRACE symbol, the signatures for the dTrace methods get defined. Is this the intended results when HAVE_DTRACE is not defined?
[2 May 2008 11:58]
Olav Sandstaa
If I add --enable-dtrace when running configure most of the unknown dtrace symbols are resolved. Only the two Falcon specific symbols are still not found by the linker: Undefined first referenced symbol in file __dtrace_falcon___close ../storage/falcon/libfalcon.a(libhafalcon_a-ha_falcon.o) __dtrace_falcon___open ../storage/falcon/libfalcon.a(libhafalcon_a-ha_falcon.o)
[19 Jun 2008 12:39]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/48169 2712 Olav Sandstaa 2008-06-19 Temporary work-around for Bug#36403 Compiling Falcon on Solaris fails due to dtrace To avoid that other people compiling on Solaris have problems with linking the two DTrace probes found in Falcon we temporarily comment these out of the code. Before these should be enabled again there need to be done some work on how configure and make do linking of DTrace probes for the storage engines.
[23 Jun 2008 13:44]
Olav Sandstå
I have made a separate bug report for the DTrace linking errors that are not related to Falcon. See Bug#37584 "MySQL does not link on Solaris 10 MU4 or newer due to missing DTrace symbols".
[22 Aug 2008 18:35]
Kevin Lewis
Fix is in version 6.0.6
[30 Sep 2008 19:24]
Jon Stephens
Documented in the 6.0.6 changelog as follows: Compiling the server with Falcon support failed on Solaris 10 due to problems with DTrace. This occurred even when the build was configured using --disable-dtrace.