[#397988] Help with sqlite3 please — Kaye Ng <lists@...>

I'm on Windows 7 Ultimate, 64-bit

18 messages 2012/08/03
[#397989] Re: Help with sqlite3 please — Chris Hulan <chris.hulan@...> 2012/08/03

sqlite is not ruby, so you should look for a sqlite group ;)

[#397990] Re: Help with sqlite3 please — Kaye Ng <lists@...> 2012/08/03

> However it looks like you have 'SQL' at the beginning of your CREATE

[#398031] Gem install or usage problem in shared environment — Tom Moulton <lists@...>

I am moving to a Westhost shared CPanel account and I am trying to set

17 messages 2012/08/04
[#398077] Re: Gem install or usage problem in shared environment — Tom Moulton <lists@...> 2012/08/06

I got a solution from WestHost and it may help others:

[#398086] Re: Gem install or usage problem in shared environment — Ryan Davis <ryand-ruby@...> 2012/08/07

[#398088] Re: Gem install or usage problem in shared environment — Tom Moulton <lists@...> 2012/08/07

Ryan Davis wrote in post #1071503:

[#398063] Join with ActiveRecord using non-standard schema — Tedi Roca <lists@...>

Hi,

13 messages 2012/08/06

[#398135] Help with database-related code pls — Kaye Ng <lists@...>

Hi guys! This is just a part of the code of a program that can load a

12 messages 2012/08/08

[#398190] How do you order your class methods? — masta Blasta <lists@...>

Just getting some layout ideas from other fellow devs.

11 messages 2012/08/10

[#398245] namespace instance methods? — John Doe <lists@...>

I have a large class with many instance methods that I want to

14 messages 2012/08/13

[#398287] Idea: def ... end returns the symbolized version of the newly-defined method, instead of nil — Peter <lumbergh@...>

This would allow useful syntax constructs such as this:

9 messages 2012/08/13

[#398362] case vs if-else — ajay paswan <lists@...>

Which one is faster?

20 messages 2012/08/16

[#398385] A Ruby class is never closed — Rubyist Rohit <lists@...>

Is it true that a Ruby class definition is never closed? Even after

18 messages 2012/08/16

[#398504] How to create an EXecutable file (Linux) — Fosiul Alam <lists@...>

Hi

13 messages 2012/08/22

[#398506] Save a file by clicking on a link — ajay paswan <lists@...>

I clicked a link to download a file using ruby, now I see the open-save

41 messages 2012/08/22

[#398641] force child threads run paralelly? — ajay paswan <lists@...>

I have created two child thread using main thread- child1 and child2.

19 messages 2012/08/28
[#398644] Re: force child threads run paralelly? — ajay paswan <lists@...> 2012/08/28

Ruby version:

[#398648] Re: force child threads run paralelly? — Tony Arcieri <tony.arcieri@...> 2012/08/28

On Tue, Aug 28, 2012 at 7:19 AM, ajay paswan <lists@ruby-forum.com> wrote:

[#398684] Can I do this with Ruby and sqlite alone? — Kaye Ng <lists@...>

Hi guys.

16 messages 2012/08/29

Ruby C extensions, callbacks, garbage collection, stack scanning

From: "Richard W.M. Jones" <rjones@...>
Date: 2012-08-03 14:01:16 UTC
List: ruby-talk #397983
I found a strange, almost unbelievable bug in the way that the Ruby 1.8.7
garbage collector scans the stack:

https://bugzilla.redhat.com/show_bug.cgi?id=843188#c6

  (1) Ruby scans the stack using an imprecise pointer detector
  (is_pointer_to_heap in gc.c)

  (2) At the point where the crash occurs, it is scanning an
  8192 byte buffer that happens to be on the stack somewhere
  in the middle of libguestfs, and happens to contains random
  data related to the upload operation.  Ruby really should not
  be scanning this buffer.

  (3) The actual part of this buffer that is being scanned
  (0xbfa71ce4) looks like a valid stack pointer.  It isn't -- it's
  just some random data that happens to look like that.

  (4) If we interpret this random data as a Ruby VALUE, it becomes
  clearer what's going on:

  (gdb) print/x *0xbfa71ce4
  $15 = 0xb6dcec98
  (gdb) print *(RVALUE *)0xb6dcec98
  $17 = {
    as = {
      free = {
        flags = 98,   # to Ruby this looks like T_DATA
  [...]
      data = {
        basic = {
          flags = 98, 
          klass = 3077482900
        }, 
        dmark = 0x49b0de10 <mark_load_arg>, 
        dfree = 0, 
        data = 0xbfa71ccc
      }, 
  [...]

  (5) As you can see from the stack trace, Ruby follows the
  completely bogus "data" pointer 0xbfa71ccc:

  #9  0x49b0de33 in mark_load_arg (ptr=0xbfa71ccc) at marshal.c:841

  and eventually this causes a crash.

I'm assuming this behaviour can't possibly be intentional.  In other
languages that I've used which have mark-sweep garbage collectors,
it's normal that you have to mark parts of the C stack which need
scanning, instead of risking the above happening.

But I can't find any documentation in Ruby about how one would mark
the stack.  So how do I avoid Ruby scanning bits of the stack that are
buffers or contain other coincidental values?

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org

In This Thread

Prev Next