Actions
Bug #12330
closedvm_trace.c (get_event_id) returns :specified_line if SPECIFIED_LINE was occurred
Description
Because r38728 is last commit about this line, I think this is not intended behavior.
To check which symbol is returned,
diff --git a/ext/-test-/tracepoint/tracepoint.c b/ext/-test-/tracepoint/tracepoint.c
index aa8c212..8979853 100644
--- a/ext/-test-/tracepoint/tracepoint.c
+++ b/ext/-test-/tracepoint/tracepoint.c
@@ -84,6 +84,18 @@ tracepoint_specify_normal_and_internal_events(VALUE self)
return Qnil; /* should not be reached */
}
+static VALUE
+tracepoint_line_event_sym(VALUE self)
+{
+ return ID2SYM(get_event_id(RUBY_EVENT_LINE));
+}
+
+static VALUE
+tracepoint_specified_line_event_sym(VALUE self)
+{
+ return ID2SYM(get_event_id(RUBY_EVENT_SPECIFIED_LINE));
+}
+
void Init_gc_hook(VALUE);
void
@@ -93,4 +105,6 @@ Init_tracepoint(void)
Init_gc_hook(mBug);
rb_define_module_function(mBug, "tracepoint_track_objspace_events", tracepoint_track_objspace_events, 0);
rb_define_module_function(mBug, "tracepoint_specify_normal_and_internal_events", tracepoint_specify_normal_and_internal_events, 0);
+ rb_define_module_function(mBug, "tracepoint_line_event_sym", tracepoint_line_event_sym, 0);
+ rb_define_module_function(mBug, "tracepoint_specified_line_event_sym", tracepoint_specified_line_event_sym, 0);
}
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index ef6caa1..36d472d 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -2126,6 +2126,7 @@ typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE s
#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
int rb_remove_event_hook(rb_event_hook_func_t func);
+ID get_event_id(rb_event_flag_t);
/* locale insensitive functions */
diff --git a/test/-ext-/tracepoint/test_tracepoint.rb b/test/-ext-/tracepoint/test_tracepoint.rb
index 33d0c3e..8db8c77 100644
--- a/test/-ext-/tracepoint/test_tracepoint.rb
+++ b/test/-ext-/tracepoint/test_tracepoint.rb
@@ -58,6 +58,14 @@ def test_tracepoint_specify_normal_and_internal_events
assert_raise(TypeError){ Bug.tracepoint_specify_normal_and_internal_events }
end
+ def test_tracepoint_line_event_sym
+ assert_equal :line, Bug.tracepoint_line_event_sym
+ end
+
+ def test_tracepoint_specified_line_event_sym
+ assert_equal :line, Bug.tracepoint_specified_line_event_sym
+ end
+
def test_after_gc_start_hook_with_GC_stress
bug8492 = '[ruby-dev:47400] [Bug #8492]: infinite after_gc_start_hook reentrance'
assert_nothing_raised(Timeout::Error, bug8492) do
diff --git a/vm_trace.c b/vm_trace.c
index b814a12..eb54569 100644
--- a/vm_trace.c
+++ b/vm_trace.c
@@ -577,7 +577,7 @@ get_event_name(rb_event_flag_t event)
}
}
-static ID
+ID
get_event_id(rb_event_flag_t event)
{
ID id;
and
$ make test-all TESTS="-- -ext-/tracepoint/test_tracepoint.rb"
CC = clang
LD = ld
LDSHARED = clang -dynamic -bundle
CFLAGS = -O0 -fno-fast-math -g3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -Werror=division-by-zero -Werror=deprecated-declarations -Werror=extra-tokens -pipe
XCFLAGS = -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -fPIE
CPPFLAGS = -DRUBY_DEBUG_ENV -DARRAY_DEBUG -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -I. -I.ext/include/x86_64-darwin14 -I./include -I.
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -fstack-protector -Wl,-u,_objc_msgSend -Wl,-pie -framework CoreFoundation
SOLIBS = -lgmp
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.4.0
Thread model: posix
generating known_errors.inc
known_errors.inc unchanged
generating prelude.c
prelude.c unchanged
Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=./test/excludes --name=!/memory_leak/ --
# Running tests:
[4/7] TestTracepointObj#test_tracepoint_specified_line_event_sym = 0.00 s
1) Failure:
TestTracepointObj#test_tracepoint_specified_line_event_sym [/Users/yuichirokaneko/ruby/ruby/test/-ext-/tracepoint/test_tracepoint.rb:66]:
<:line> expected but was
<:specified_line>.
Finished tests in 0.726435s, 9.6361 tests/s, 60.5698 assertions/s.
7 tests, 44 assertions, 1 failures, 0 errors, 0 skips
ruby -v: ruby 2.4.0dev (2016-04-29 trunk 54818) [x86_64-darwin14]
make: *** [yes-test-all] Error 1
To fix this
@@ -597,8 +597,7 @@ get_event_id(rb_event_flag_t event)
C(thread_begin, THREAD_BEGIN);
C(thread_end, THREAD_END);
C(fiber_switch, FIBER_SWITCH);
- C(specified_line, SPECIFIED_LINE);
- case RUBY_EVENT_LINE | RUBY_EVENT_SPECIFIED_LINE: CONST_ID(id, "line"); return id;
+ C(line, SPECIFIED_LINE);
#undef C
default:
return 0;
Updated by ko1 (Koichi Sasada) over 7 years ago
- Status changed from Open to Closed
Thank you for your investigation. Now, RUBY_EVENT_SPECIFIED_LINE
should not be used and I'll remove this feature soon.
Thanks,
Koichi
Actions
Like0
Like0