Discussion:
[ruby-core:55815] [ruby-trunk - Bug #8606][Open] compile with --enable-dtrace fails with dtrace version SUN D 1.11
sax (Eric Saxby)
2013-07-06 02:17:25 UTC
Permalink
Issue #8606 has been reported by sax (Eric Saxby).

----------------------------------------
Bug #8606: compile with --enable-dtrace fails with dtrace version SUN D 1.11
https://bugs.ruby-lang.org/issues/8606

Author: sax (Eric Saxby)
Status: Open
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version:
ruby -v: 2.0.0-p247
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When compiling Ruby 2.0 with --enable-dtrace on platforms with dtrace version SUN D 1.11 (for example, SmartOS with platform image joyent_20130521T084103Z or greater), the compile fails just after linking miniruby. The compile fails on linking dtrace symbols, as they are missing.

The problem is that in dtrace 1.11, the compiler was changed to fail if no probes are found. configure runs a test to check whether dtrace -G is needed, I believe because OS X does not need it.

https://github.com/ruby/ruby/blob/1c0abbf07692b21835f6c81f759b8d2d6b8963c2/configure.in#L536-L539

On newer dtrace, this results in the following error:
"dtrace: failed to link script conftest_provider: No probe sites found for declared provider"

So configure incorrectly determines that dtrace -G is not needed, and compilation fails.
rmustacc: So, the most correct solution would be to use the probe from the header file in the conftest.o that they try and run dtrace -G on.
--
http://bugs.ruby-lang.org/
sax (Eric Saxby)
2013-07-06 02:22:16 UTC
Permalink
Issue #8606 has been updated by sax (Eric Saxby).


This is High priority for me, as it is blocking me from deploying Ruby 2.0 in the Joyent Public Cloud. I understand if others feel it is lower priority.

Thank you for your consideration! I will try to try to find a solution myself and submit a pull request, but I do not have much experience in this regard.
----------------------------------------
Bug #8606: compile with --enable-dtrace fails with dtrace version SUN D 1.11
https://bugs.ruby-lang.org/issues/8606#change-40317

Author: sax (Eric Saxby)
Status: Open
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version:
ruby -v: 2.0.0-p247
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When compiling Ruby 2.0 with --enable-dtrace on platforms with dtrace version SUN D 1.11 (for example, SmartOS with platform image joyent_20130521T084103Z or greater), the compile fails just after linking miniruby. The compile fails on linking dtrace symbols, as they are missing.

The problem is that in dtrace 1.11, the compiler was changed to fail if no probes are found. configure runs a test to check whether dtrace -G is needed, I believe because OS X does not need it.

https://github.com/ruby/ruby/blob/1c0abbf07692b21835f6c81f759b8d2d6b8963c2/configure.in#L536-L539

On newer dtrace, this results in the following error:
"dtrace: failed to link script conftest_provider: No probe sites found for declared provider"

So configure incorrectly determines that dtrace -G is not needed, and compilation fails.
rmustacc: So, the most correct solution would be to use the probe from the header file in the conftest.o that they try and run dtrace -G on.
--
http://bugs.ruby-lang.org/
sax (Eric Saxby)
2013-07-06 15:35:03 UTC
Permalink
Issue #8606 has been updated by sax (Eric Saxby).


linking miniruby
Undefined first referenced
symbol in file
__dtraceenabled_ruby___require__entry load.o
__dtrace_ruby___cmethod__entry vm.o
__dtrace_ruby___parse__begin parse.o
__dtraceenabled_ruby___cmethod__entry vm.o
__dtrace_ruby___require__entry load.o
__dtrace_ruby___find__require__entry load.o
__dtrace_ruby___method__return vm.o
__dtraceenabled_ruby___find__require__entry load.o
__dtrace_ruby___hash__create hash.o
__dtraceenabled_ruby___load__return load.o
__dtraceenabled_ruby___require__return load.o
__dtrace_ruby___object__create object.o
__dtrace_ruby___method__entry vm.o
__dtraceenabled_ruby___parse__begin parse.o
__dtraceenabled_ruby___object__create object.o
__dtraceenabled_ruby___gc__mark__end gc.o
__dtrace_ruby___gc__mark__begin gc.o
__dtraceenabled_ruby___hash__create hash.o
__dtrace_ruby___string__create string.o
__dtraceenabled_ruby___find__require__return load.o
__dtraceenabled_ruby___cmethod__return vm.o
__dtrace_ruby___gc__mark__end gc.o
__dtraceenabled_ruby___parse__end parse.o
__dtraceenabled_ruby___method__entry vm.o
__dtrace_ruby___gc__sweep__begin gc.o
__dtraceenabled_ruby___string__create string.o
__dtrace_ruby___raise eval.o
__dtrace_ruby___require__return load.o
__dtraceenabled_ruby___load__entry load.o
__dtrace_ruby___parse__end parse.o
__dtraceenabled_ruby___array__create array.o
__dtraceenabled_ruby___gc__sweep__end gc.o
__dtraceenabled_ruby___gc__sweep__begin gc.o
__dtrace_ruby___gc__sweep__end gc.o
__dtraceenabled_ruby___method__return vm.o
__dtraceenabled_ruby___raise eval.o
__dtrace_ruby___cmethod__return vm.o
__dtraceenabled_ruby___gc__mark__begin gc.o
__dtrace_ruby___load__return load.o
__dtrace_ruby___array__create array.o
__dtrace_ruby___find__require__return load.o
__dtrace_ruby___load__entry load.o
----------------------------------------
Bug #8606: compile with --enable-dtrace fails with dtrace version SUN D 1.11
https://bugs.ruby-lang.org/issues/8606#change-40326

Author: sax (Eric Saxby)
Status: Open
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version:
ruby -v: 2.0.0-p247
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When compiling Ruby 2.0 with --enable-dtrace on platforms with dtrace version SUN D 1.11 (for example, SmartOS with platform image joyent_20130521T084103Z or greater), the compile fails just after linking miniruby. The compile fails on linking dtrace symbols, as they are missing.

The problem is that in dtrace 1.11, the compiler was changed to fail if no probes are found. configure runs a test to check whether dtrace -G is needed, I believe because OS X does not need it.

https://github.com/ruby/ruby/blob/1c0abbf07692b21835f6c81f759b8d2d6b8963c2/configure.in#L536-L539

On newer dtrace, this results in the following error:
"dtrace: failed to link script conftest_provider: No probe sites found for declared provider"

So configure incorrectly determines that dtrace -G is not needed, and compilation fails.
rmustacc: So, the most correct solution would be to use the probe from the header file in the conftest.o that they try and run dtrace -G on.
--
http://bugs.ruby-lang.org/
sax (Eric Saxby)
2013-07-06 16:05:43 UTC
Permalink
Issue #8606 has been updated by sax (Eric Saxby).


The following code does not error on newer dtrace:

echo "provider conftest{ probe fire(); };" > conftest_provider.d
dtrace -h -o conftest_provider.h -s conftest_provider.d

cat >conftest.c <<_ACEOF
#include "conftest_provider.h"
int main(void){
CONFTEST_FIRE();
return 0;
}
_ACEOF

gcc -c -o conftest.o conftest.c
dtrace -G -s conftest_provider.d conftest.o
----------------------------------------
Bug #8606: compile with --enable-dtrace fails with dtrace version SUN D 1.11
https://bugs.ruby-lang.org/issues/8606#change-40327

Author: sax (Eric Saxby)
Status: Open
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version:
ruby -v: 2.0.0-p247
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When compiling Ruby 2.0 with --enable-dtrace on platforms with dtrace version SUN D 1.11 (for example, SmartOS with platform image joyent_20130521T084103Z or greater), the compile fails just after linking miniruby. The compile fails on linking dtrace symbols, as they are missing.

The problem is that in dtrace 1.11, the compiler was changed to fail if no probes are found. configure runs a test to check whether dtrace -G is needed, I believe because OS X does not need it.

https://github.com/ruby/ruby/blob/1c0abbf07692b21835f6c81f759b8d2d6b8963c2/configure.in#L536-L539

On newer dtrace, this results in the following error:
"dtrace: failed to link script conftest_provider: No probe sites found for declared provider"

So configure incorrectly determines that dtrace -G is not needed, and compilation fails.
rmustacc: So, the most correct solution would be to use the probe from the header file in the conftest.o that they try and run dtrace -G on.
--
http://bugs.ruby-lang.org/
sax (Eric Saxby)
2013-07-06 16:46:31 UTC
Permalink
Issue #8606 has been updated by sax (Eric Saxby).


Please find a pull request here:
https://github.com/ruby/ruby/pull/351

I apologize about setting the priority to High. I just saw in the documentation for filing reports to please leave priority unassigned. In the future I will do so!
----------------------------------------
Bug #8606: compile with --enable-dtrace fails with dtrace version SUN D 1.11
https://bugs.ruby-lang.org/issues/8606#change-40328

Author: sax (Eric Saxby)
Status: Open
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: build
Target version:
ruby -v: 2.0.0-p247
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


When compiling Ruby 2.0 with --enable-dtrace on platforms with dtrace version SUN D 1.11 (for example, SmartOS with platform image joyent_20130521T084103Z or greater), the compile fails just after linking miniruby. The compile fails on linking dtrace symbols, as they are missing.

The problem is that in dtrace 1.11, the compiler was changed to fail if no probes are found. configure runs a test to check whether dtrace -G is needed, I believe because OS X does not need it.

https://github.com/ruby/ruby/blob/1c0abbf07692b21835f6c81f759b8d2d6b8963c2/configure.in#L536-L539

On newer dtrace, this results in the following error:
"dtrace: failed to link script conftest_provider: No probe sites found for declared provider"

So configure incorrectly determines that dtrace -G is not needed, and compilation fails.
rmustacc: So, the most correct solution would be to use the probe from the header file in the conftest.o that they try and run dtrace -G on.
--
http://bugs.ruby-lang.org/
Loading...