[#58730] [ruby-trunk - misc #9188][Open] r43870 make benchmark/bm_so_k_nucleotide.rb slow — "authorNari (Narihiro Nakamura)" <authorNari@...>

17 messages 2013/12/01

[#58732] [ruby-trunk - Bug #9189][Open] Build failure on Windows in case of nonascii TEMP environment. — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/01

[#58750] [ruby-trunk - Feature #9190][Open] Expose serial helper macros — "simeonwillbanks (Simeon Willbanks)" <sfw@...>

13 messages 2013/12/01

[#58756] [ruby-trunk - Bug #9192][Open] Inconsistent comparison between Float and BigDecimal — "vatsu (Gustavo Sales)" <vatsu21@...>

18 messages 2013/12/02

[#58797] [ruby-trunk - Bug #9198][Open] Segfault in TestException#test_machine_stackoverflow — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/12/02

[#58833] [ruby-trunk - Bug #9205][Open] Assertion failed: heap_pages_deferred_final == 0 — "phasis68 (Heesob Park)" <phasis@...>

11 messages 2013/12/03

[#58866] [ruby-trunk - misc #9215][Open] Maintenance Policy for Future Releases (2.1.0 & beyond) — "hone (Terence Lee)" <hone02@...>

17 messages 2013/12/05

[#58876] [ruby-trunk - Bug #9221][Open] Time.parse performance becomes exponentially worse as string length grows — "mpelzsherman (Michael Pelz-Sherman)" <mpelzsherman@...>

15 messages 2013/12/05

[#58948] [ruby-trunk - Bug #9226][Open] Getting method `inspect' called on unexpected T_NODE object (0x000000025ddea8 flags=0x109089c klass=0x0) (NotImplementedError) from Hash#inspect — "myronmarston (Myron Marston)" <myron.marston@...>

11 messages 2013/12/07

[#59032] [ruby-trunk - Bug #9239][Open] Array#to_h ignores flat arrays — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

15 messages 2013/12/10

[#59122] [ruby-trunk - Bug #9251][Open] ! operator has lower precedence than = in an assignment expression — "rits (First Last)" <redmine@...>

26 messages 2013/12/15

[#59198] [ruby-trunk - Bug #9262][Open] global_method_cache should be configurable or grow automatically — "tmm1 (Aman Gupta)" <ruby@...1.net>

28 messages 2013/12/19

[#59209] [ruby-trunk - Bug #9264][Open] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "spastorino (Santiago Pastorino)" <santiago@...>

15 messages 2013/12/19
[#59211] [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — "zzak (Zachary Scott)" <e@...> 2013/12/19

[#59212] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

zzak, make distclean is the first thing I've ran. Read the gist again :),

[#59213] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

Sorry I missed the gist, can you try building outside of $srcdir?

[#59214] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Santiago Pastorino <spastorino@...> 2013/12/19

It works if I do ...

[#59215] Re: [ruby-trunk - Bug #9264][Feedback] Compiling error: encdb.bundle Undefined symbols for architecture x86_64 — Zachary Scott <e@...> 2013/12/19

I've been using the following:

[#59255] [ruby-trunk - Bug #9276][Open] "RUBY_FREE_MIN is obsolete. Use RUBY_GC_HEAP_FREE_SLOTS instead" warning should not be issued when both ENV vars are set. — "myronmarston (Myron Marston)" <myron.marston@...>

10 messages 2013/12/21

[#59260] [ruby-trunk - Feature #9278][Open] Magic comment "immutable: string" makes "literal".freeze the default for that file — "colindkelley (Colin Kelley)" <colin@...>

12 messages 2013/12/22

[#59343] [ruby-trunk - Bug #9309][Open] Crash while running tests — "mdemare (Michiel de MAre)" <merloen@...>

12 messages 2013/12/27

[#59345] [ruby-trunk - Bug #9310][Open] inheritance.rb: 27: [BUG] Segmentation fault at 0x00000c — "jasnow (Al Snow)" <jasnow@...>

10 messages 2013/12/27

[#59349] [ruby-trunk - Bug #9312][Open] Build the ruby executable in bin/ — "postmodern (Hal Brodigan)" <postmodern.mod3@...>

13 messages 2013/12/28

[#59365] [ruby-trunk - Bug #9316][Open] BigDecimal division in Ruby 2.1 — "abernardes (Andre Oliveira)" <abernardes@...>

15 messages 2013/12/28

[#59398] [ruby-trunk - Bug #9321][Open] rb_mod_const_missing does not generate a c-return event — "drkaes (Stefan Kaes)" <stkaes@...>

41 messages 2013/12/30

[#59429] [ruby-trunk - Feature #9330][Open] [PATCH 0/3] avoid redundant fcntl/fstat syscalls for cloexec sockets — "normalperson (Eric Wong)" <normalperson@...>

10 messages 2013/12/31

[ruby-core:59119] Naming issue about ObjectSpace.trace_object_allocation.

From: SASADA Koichi <ko1@...>
Date: 2013-12-15 04:24:04 UTC
List: ruby-core #59119
Let me ask the method naming issue.

    * ObjectSpace.allocation_sourcefile
    * ObjectSpace.allocation_sourceline
    * ObjectSpace.allocation_class_path
    * ObjectSpace.allocation_method_id
    * ObjectSpace.allocation_generation

I wroet an article about ObjectSpace.trace_object_allocation in Japanese
http://www.atdot.net/~ko1/diary/201312.html#d6
and I tried to translate it into English (the end of this mail).

Kou gave me a comment that:
"I feel strange about the method name `sourcefile' and `sourceline',
because it is not `source_file' and `source_line'".

Another gave me a comment that:
"Why not `allocated_xxx' instead of `allocation_xxx'?"

Give me your comments.

* The name of sourcefile and sorceline are based on "rb_sourcefile" and
"rb_sourceline".

* The name of "allocation" is from "trace_object_allocations" (I want to
use same word `allocation').

Thanks,
Koichi

# bike shed party

----
From Ruby 2.1, we can store object allocation related information with
ObjectSpace.trace_object_allocations.

Currently, this feature supports to store the following information
about "where/when".

* Where
  * file name
  * line nmber
  * class name (representing String)
  * method id
* When
  * GC generation
    (This is not about "Genrational GC". It is GC.count at allocation)

See the code:

####
require 'objspace'

def where_are_you_from? obj
  file = ObjectSpace.allocation_sourcefile(obj)
  line = ObjectSpace.allocation_sourceline(obj)
  "#{file}:#{line}" if file && line
end

ObjectSpace.trace_object_allocations{
  $a = a = Object.new # created at t.rb:10
  b = Object.new # created at t.rb:11

  p where_are_you_from?(a) #=> "t.rb:10"
  p where_are_you_from?(b) #=> "t.rb:11"
}
c = Object.new # created at t.rb:16

p where_are_you_from?($a) #=> "t.rb:10"
p where_are_you_from?(c) #=> nil

ObjectSpace.trace_object_allocations_clear
p where_are_you_from?($a) #=> nil
####

This code generate a ($a) and b objects in block passed to
ObjectSpace.trace_object_allocations.

You can know file name and line nubmer using `where_are_you_from?()'
method with a returning string such as "t.rb:10".

When you exit the block, object allocation information is not stored.
This is why we can't see the information of the object `c' (simply
return nil).

Exiting the block, you can see the information about $a, because
allocation information are still remained.

To clear all allocation tracing information, you can use
`ObjectSpace.trace_object_allocations_clear'. After calling this method,
you can't see the information about $a. If you can understand allocation
information is no longer needed, you can call this method.

Information can be ask via the following methods:

* Where
  * file name -> ObjectSpace.allocation_sourcefile
  * line nmber -> ObjectSpace.allocation_sourceline
  * class name (representing String) ->
              ObjectSpace.allocation_class_path
  * method id -> ObjectSpace.allocation_method_id
* When
  * GC generation -> ObjectSpace.allocation_generation

Note that ObjectSpace.trace_object_allocations enables to store
information during given block. We have other methods: start tracing
with ObjectSpace.trace_object_allocations_start, and stop tracing with
ObjectSpace.trace_object_allocations_stop.

Therefore, ObjectSpace.trace_object_allocations can be defined as the
following code:

def ObjectSpace.trace_object_allocations
  begin
    ObjectSpace.trace_object_allocations_start
    yield
  ensure
    ObjectSpace.trace_object_allocations_stop
  end
end

It is very convinient feature. However, it has disadvantage that the
performance of object creation and freeing are very slow. You can use
this feature for debugging and profiling.

There is another important point. This feature is, in fact, the sample
code of using new internal TracePoint API. You can make similar feature
using this internal TracePoint API.
----


-- 
// SASADA Koichi at atdot dot net

In This Thread

Prev Next