[#400858] Support for multiple Inheritance by classes — Ross Konsolebox <lists@...>

Will Ruby ever support multiple inheritance through classes instead of

23 messages 2012/11/03
[#400859] Re: Support for multiple Inheritance by classes — Arlen Cuss <ar@...> 2012/11/03

I think I can say "no" with a fair amount of confidence.

[#400902] Re: Support for multiple Inheritance by classes — Ross Konsolebox <lists@...> 2012/11/04

Arlen Cuss wrote in post #1082618:

[#400904] Re: Support for multiple Inheritance by classes — Peter Hickman <peterhickman386@...> 2012/11/04

Even though other languages handle multiple inheritance without any

[#400865] why does UnboundMethod need to remember the class it was retrieved from (not merely owner)? — "Mean L." <lists@...>

class Base; def foo; end end

17 messages 2012/11/03

[#400914] login web page using mechanize — john smith <lists@...>

new to ruby, love the language. read programmatic programmers guide to

25 messages 2012/11/04

[#400985] How to merge two or more hashes in to one? — "Jermaine O." <lists@...>

Hi everyone.

14 messages 2012/11/06

[#401026] Site down watir-webdriver — ajay paswan <lists@...>

Whenever a site is down it keeps on looking for it for sometime and

14 messages 2012/11/07

[#401027] Closing popups watir-webdriver — ajay paswan <lists@...>

Sometimes popup comes when a link is clicked, sometimes popup comes when

14 messages 2012/11/07

[#401125] Complete newbie — "Carlos A." <lists@...>

Hey guys!

14 messages 2012/11/10

[#401161] Convert date to string — Ferdous ara <lists@...>

Hi

12 messages 2012/11/11

[#401173] question on watir — Raj pal <lists@...>

I am automating Idit application using Ruby, at one screen I can't feed

233 messages 2012/11/12

[#401191] Extending Array instances — Charles Hixson <charleshixsn@...>

I'm trying to figure out a good way to extend an Array, when the items

17 messages 2012/11/12
[#401195] Re: Extending Array instances — Brian Candler <lists@...> 2012/11/12

Charles Hixson wrote in post #1084111:

[#401200] Efficient way for comparing records between 2 large files (16 million records) — Ruby Student <ruby.student@...>

Team,

9 messages 2012/11/12

[#401274] following along with "Beginning Ruby." — Al Baker <lists@...>

I'm having trouble following along with some of the examples in this

15 messages 2012/11/15

[#401279] Question on exceptions — Justin Gamble <lists@...>

Hello! I have a simple bank program where I have to have an exception

16 messages 2012/11/15
[#401281] Re: Question on exceptions — Justin Gamble <lists@...> 2012/11/15

What is the reason of doing the .new(...)in

[#401295] Re: Question on exceptions — Brian Candler <lists@...> 2012/11/16

Justin Gamble wrote in post #1084635:

[#401296] Re: Question on exceptions — tamouse mailing lists <tamouse.lists@...> 2012/11/16

On Fri, Nov 16, 2012 at 1:43 AM, Brian Candler <lists@ruby-forum.com> wrote:

[#401301] Alternatives to methods for large number of nested "ifs" — Philip Rhoades <phil@...>

People,

11 messages 2012/11/16

[#401336] Advice for simple client/server application — Panagiotis Atmatzidis <atma@...>

Hello,

12 messages 2012/11/17

[#401364] Metaprogramming — "Aurimas N." <lists@...>

Hello,

12 messages 2012/11/19

[#401404] "undefined method `synchronize' for #<Mutex:0xa0f5adc>" from embedded Ruby program — Graham Menhennitt <graham@...>

I'm writing a C++ program (on Centos 5 Linux) that embeds a Ruby 1.9.3

9 messages 2012/11/21

[#401422] how to increase variable inside the while loop — Ferdous ara <lists@...>

Hi, my question might be confusing as its hard for me to make it clear,

12 messages 2012/11/21

[#401451] Arrays with records as objects — Steve Tucknott <lists@...>

I am completely new to Ruby.

11 messages 2012/11/22

[#401458] working with mysql in ruby — john smith <lists@...>

i have been trying to successfully connect ruby with mysql. there are a

17 messages 2012/11/22

[#401567] click on link not working with ie #watir-webdriver — ajay paswan <lists@...>

Greetings,

12 messages 2012/11/26

[#401578] atomic statements in multithreading — ajay paswan <lists@...>

suppose I am working in multiple thread each thread runs following

10 messages 2012/11/26

[#401607] Novice: Understanding instance 'variables' and methods — Steve Tucknott <lists@...>

A question - or comment - on instance variables.

10 messages 2012/11/26

[#401644] Getting the smallest Items of an Array — "Ismail M." <lists@...>

Hello guys,

14 messages 2012/11/27

[#401655] gem problems(sigh) — Al Baker <lists@...>

i tried to make a gem and tried to build the spec file and this is what

10 messages 2012/11/28

[#401688] sorting data from a file — "Ismail M." <lists@...>

Hey guys,

16 messages 2012/11/28

[#401706] Newbie question: (free) on-line courses? — Ken D'Ambrosio <ken@...>

Hello, all. There's a bunch of free on-line training for Javascript,

11 messages 2012/11/28

Re: C Extension: Why would VALUE state appear differently during shutdown than immediately before it

From: Robert Buck <lists@...>
Date: 2012-11-24 15:55:36 UTC
List: ruby-talk #401524
For the record, if anyone else tries to write a database driver, or any
C extension that has a graph of objects that have deallocation order
dependencies...

If you are integrating with mark and sweep, and provide free hooks for
your objects, be aware that at shutdown Ruby drops objects from its
object table in allocation order (table order). This means that once it
has called your free-hooks (defined in your calls to Data_Wrap_Struct),
afterwards ever after YOU CANNOT / MUST NOT, ***EVER*** call
Data_Get_Struct on a VALUE that has been visited/dropped from the Ruby
object table. Ruby will SEGV with a very hard to diagnose issue.

Your C structs should probably do something like this:

struct hierarchical_handle
{
    // the hook to the real C/C++ free code, never accessed
    // directly by Ruby GC, only via ref count decr routines
    RUBY_DATA_FUNC free_func;

    // increment this to 1 on allocation, children inc count
    // only free-hooks decr counts; in fact, your free-hooks
    // could simply be atomic_dec(handle*)
    rb_atomic_t atomic;

    // used by ref counting routines to pin C/C++ objects
    // in memory till the last one drops its reference
    nuodb_handle * parent_handle;

    // used to pin parents in memory via rb_gc_mark
    VALUE parent;
};

Like me, just steal atomic.[c|h] from Ruby. But N.B. There is a major
bug in them, somebody in the Ruby camp used the WRONG
GCC_ATOMIC_BUILTINS !@!!

Somebody ought to fix atomic.h, its screwed up badly.

Robert Buck wrote in post #1086203:
> I have a graph of objects in a C extension, and as such I maintain
> reference counts from children to parents as deallocations are order
> dependent (see struct definition below).
>
> While I run my program the reference counts match up, but when the
> program exits, when ruby dumps its entire object table calling free on
> every VALUE the parent's free functions are called before the children
> as the parents were allocated first and they appear in the ruby object
> table first (this was the whole reason for adding reference counting,
> because otherwise order dependent deallocations in C code causes a
> SEGV).
>
> Anyways, before shutdown here are my ref counts:
>
> [REFERENCE COUNT][O INCR] (child @ 00007fd6d0ddd5c0): 1 (parent @
> 00007fd6d2538460): 2
>
> n.b. 2 refs
>
> And after shutdown the ref counts are "magically" different:
>
> [REFERENCE COUNT][I DECR] (child @ 00007fd6d2538460): 1 (parent @
> 0000000000000000): -10
>
> n.b. -10 is just a sentinel marker, ignore that
> n.b. 1 refs though does not match 2 above
>
> The latter trace is for the root object, hence no parent. But notice the
> root object's reference count of 1. Take a look at its reference count
> before program termination, 2.
>
> This is saying that I have a case of memory corruption on my part,
> memory corruption on ruby's part, or my understanding of how to set up
> graphs of interrelated objects in C extensions is seriously flawed.
>
> Regarding the last option, all I am doing is maintaining a struct of:
>
> struct handle
> {
>     RUBY_DATA_FUNC free_func;
>     rb_atomic_t atomic;
>     VALUE parent;
> };
>
> Would someone have an idea of how to approach this, what could possibly
> be going on? I have been at this for three days now and I don't see any
> bug on my part.
>
> Bob

-- 
Posted via http://www.ruby-forum.com/.

In This Thread