Closed vaiorabbit closed 8 years ago
Crash Report:
/Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glfw.rb:408: [BUG] Segmentation fault at 0x0000010c8e6000
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
for more details.
Don't forget to include the above Crash Report log file in bug reports.
-- Control frame information -----------------------------------------------
c:0004 p:---- s:0020 e:000019 CFUNC :call
c:0003 p:0025 s:0017 e:000016 METHOD /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glfw.rb:408
c:0002 p:0285 s:0012 E:000b00 EVAL teapots.rb:196 [FINISH]
c:0001 p:0000 s:0002 E:000080 (none) [FINISH]
-- Ruby level backtrace information ----------------------------------------
teapots.rb:196:in `<main>'
/Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glfw.rb:408:in `glfwPollEvents'
/Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glfw.rb:408:in `call'
-- Machine register context ------------------------------------------------
rax: 0x000000010c8e6000 rbx: 0x0000000000000009 rcx: 0x0000000000000001
rdx: 0x0000000000000000 rdi: 0x00007f87d40ccd30 rsi: 0x0000000000000041
rbp: 0x00007fff53b3da10 rsp: 0x00007fff53b3d9e8 r8: 0x0000000000000000
r9: 0x0000000000000001 r10: 0x00007f87d1d85c00 r11: 0x00007fff7f112098
r12: 0x0000000000000000 r13: 0x00007fff968304c0 r14: 0x00007f87d432fc00
r15: 0x00007f87d1f19b20 rip: 0x000000010c8e6000 rfl: 0x0000000000010206
-- C level backtrace information -------------------------------------------
0 libruby.2.3.0.dylib 0x000000010c268474 rb_vm_bugreport + 388
1 libruby.2.3.0.dylib 0x000000010c109183 rb_bug_context + 483
2 libruby.2.3.0.dylib 0x000000010c1dd003 sigsegv + 83
3 libsystem_platform.dylib 0x00007fff92213eaa _sigtramp + 26
4 ??? 0x000000010c8e6000 0x0 + 4505624576
5 libglfw.3.1.dylib 0x000000010c89de22 _glfwInputKey + 290
6 libglfw.3.1.dylib 0x000000010c8a4eb7 -[GLFWContentView keyDown:] + 151
7 AppKit 0x00007fffa02cf715 -[NSWindow _reallySendEvent:isDelayedEvent:] + 2108
8 AppKit 0x00007fff9fc27735 -[NSWindow sendEvent:] + 517
9 AppKit 0x00007fff9fc2457b -[NSApplication sendEvent:] + 4382
10 libglfw.3.1.dylib 0x000000010c8a575a -[GLFWApplication sendEvent:] + 170
11 libglfw.3.1.dylib 0x000000010c8a68fd _glfwPlatformPollEvents + 141
12 libglfw.3.1.dylib 0x000000010c8a203e glfwPollEvents + 46
13 libffi.dylib 0x00007fff94ec5f14 ffi_call_unix64 + 76
14 libffi.dylib 0x00007fff94ec679b ffi_call + 923
15 fiddle.bundle 0x000000010c72d6eb nogvl_ffi_call + 27
16 libruby.2.3.0.dylib 0x000000010c2706dd rb_thread_call_without_gvl + 93
17 fiddle.bundle 0x000000010c72d22c function_call + 780
18 libruby.2.3.0.dylib 0x000000010c25e640 vm_call_cfunc + 304
19 libruby.2.3.0.dylib 0x000000010c247cd5 vm_exec_core + 10821
20 libruby.2.3.0.dylib 0x000000010c259079 vm_exec + 121
21 libruby.2.3.0.dylib 0x000000010c112484 ruby_exec_internal + 148
22 libruby.2.3.0.dylib 0x000000010c112396 ruby_run_node + 54
23 ruby 0x000000010c0c1f1f main + 79
-- Other runtime information -----------------------------------------------
* Loaded script: teapots.rb
* Loaded features:
0 enumerator.so
1 thread.rb
2 rational.so
3 complex.so
4 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/enc/encdb.bundle
5 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/enc/trans/transdb.bundle
6 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/unicode_normalize.rb
7 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/rbconfig.rb
8 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/compatibility.rb
9 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/defaults.rb
10 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/deprecate.rb
11 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/errors.rb
12 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/version.rb
13 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/requirement.rb
14 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/platform.rb
15 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/basic_specification.rb
16 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/stub_specification.rb
17 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/util/list.rb
18 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/stringio.bundle
19 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb
20 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/exceptions.rb
21 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb
22 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb
23 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb
24 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems.rb
25 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/path_support.rb
26 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/dependency.rb
27 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/version.rb
28 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/core_ext/name_error.rb
29 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/levenshtein.rb
30 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/jaro_winkler.rb
31 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkable.rb
32 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/delegate.rb
33 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
34 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
35 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
36 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
37 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/null_checker.rb
38 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/formatter.rb
39 /Users/foo/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean.rb
40 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/fiddle.bundle
41 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/function.rb
42 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/closure.rb
43 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle.rb
44 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/value.rb
45 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/pack.rb
46 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/struct.rb
47 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/cparser.rb
48 /Users/foo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fiddle/import.rb
49 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glfw.rb
50 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl_platform.rb
51 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl_common.rb
52 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl_enum.rb
53 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl_command.rb
54 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl_macosx.rb
55 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/opengl.rb
56 /Users/foo/.rvm/gems/ruby-2.3.0/gems/opengl-bindings-1.5.2/lib/glu.rb
57 /Users/foo/ruby-opengl_private/sample/util/setup_dll.rb
58 /Users/foo/ruby-opengl_private/sample/util/WavefrontOBJ.rb
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
Using Fiddle::Closure may help to avoid crashing.
For example, rewrite codes like
key_callback = GLFW::create_callback(:GLFWkeyfun) do |window_handle, key, scancode, action, mods|
case key
when GLFW_KEY_ESCAPE
glfwSetWindowShouldClose(window_handle, 1)
end
end
into
GLFWkeyfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT, -Fiddle::TYPE_INT, Fiddle::TYPE_INT]
GLFWkeyfun_cb_retval = Fiddle::TYPE_VOID
key_callback = Fiddle::Closure::BlockCaller.new(GLFWkeyfun_cb_retval, GLFWkeyfun_cb_args, Fiddle::Function::DEFAULT) { |window_handle, key, scancode, action, mods|
case key
when GLFW_KEY_ESCAPE
glfwSetWindowShouldClose(window_handle, 1)
end
}
Reference:
I updated glut.rb and glfw.rb at revision https://github.com/vaiorabbit/ruby-opengl/commit/ea018f3198c9ae918c680ab5bb68533567ebbc22 .
The new 'create_callback' ( https://github.com/vaiorabbit/ruby-opengl/commit/ea018f3198c9ae918c680ab5bb68533567ebbc22 ) is availavle on version 1.5.3
For example,
And then pressing some keys cause :
I have just started investigating this problem. Any helps are welcome.