Hi! I’m the developer for rbSFML, ruby binding of SFML. About a year ago
I had a problem with Intel integrated graphics. I abandoned it because
it made no sense. Now I have several users with exactly that problem so
I can’t just ignore it and a recent call stack didn’t report a problem
in the driver but actually looked like Ruby were collecting the object
twice.
The problem I have is that. Wrapped data structure objects are collected
too early in the objects lifetime. With that I mean there are still
references to the object but the pointer is either changed to something
invalid or it’s free’d twice.
The odd thing is that this only happens on Intel IGP and it’s impossible
to replicate on other hardware. This has been tested quite well because
we have several working projects using rbSFML, even a ludum dare entry.
Here is the latest ruby generated backtrace by a user. The memory map
was quite huge but if you want that I can attach it. I couldn’t see
anything relevant on it
though.
*** glibc detected *** /usr/bin/ruby: free(): invalid pointer:
0x098685fc *** ======= Backtrace: =========
/usr/lib/libc.so.6(+0x74c92)[0xb73d4c92]
/usr/lib/libruby.so.1.9(ruby_xfree+0x1f)[0xb756e36f]
/usr/lib/ruby/site_ruby/1.9.1/i686-linux/sfml/window.so(+0x723b)[0xb6d8b23b]
/usr/lib/libruby.so.1.9(+0x62a39)[0xb756ca39]
/usr/lib/libruby.so.1.9(rb_gc_call_finalizer_at_exit+0x1c5)[0xb7570bf5]
/usr/lib/libruby.so.1.9(ruby_cleanup+0x1d4)[0xb755d874]
/usr/lib/libruby.so.1.9(ruby_run_node+0x3e)[0xb755da6e]
/usr/bin/ruby[0x80486b8]
/usr/lib/libc.so.6(__libc_start_main+0xf5)[0xb7379605]
/usr/bin/ruby[0x80486e1]