[#56333] [CommonRuby - Feature #8723][Open] Array.any? predicate returns true for empty array. — "nurettin (Nurettin Onur TUGCU)" <onurtugcu@...>

12 messages 2013/08/02

[#56368] [ruby-trunk - Bug #8730][Open] "rescue Exception" rescues Timeout::ExitException — "takiuchi (Genki Takiuchi)" <genki@...21g.com>

15 messages 2013/08/04

[#56407] [ruby-trunk - misc #8741][Open] email notification on bugs.ruby-lang.org is broken — "rits (First Last)" <redmine@...>

18 messages 2013/08/05

[#56524] [ruby-trunk - Bug #8770][Open] [PATCH] process.c: avoid EINTR from Process.spawn — "normalperson (Eric Wong)" <normalperson@...>

19 messages 2013/08/10

[#56536] [ruby-trunk - Feature #8772][Open] Hash alias #| merge, and the case for Hash and Array polymorphism — "trans (Thomas Sawyer)" <redmine@...>

24 messages 2013/08/11

[#56544] [ruby-trunk - Bug #8774][Open] rb_file_dirname return wrong encoding string when dir is "." — jiayp@... (贾 延平) <jiayp@...>

10 messages 2013/08/11

[#56569] [ruby-trunk - Feature #8781][Open] Use require_relative() instead of require() if possible — "ko1 (Koichi Sasada)" <redmine@...>

31 messages 2013/08/12
[#56582] [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — "drbrain (Eric Hodel)" <drbrain@...7.net> 2013/08/12

[#56584] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — SASADA Koichi <ko1@...> 2013/08/12

(2013/08/13 2:25), drbrain (Eric Hodel) wrote:

[#56636] Re: [ruby-trunk - Feature #8781] Use require_relative() instead of require() if possible — Aaron Patterson <tenderlove@...> 2013/08/16

On Tue, Aug 13, 2013 at 07:38:01AM +0900, SASADA Koichi wrote:

[#56634] [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread — "normalperson (Eric Wong)" <normalperson@...>

11 messages 2013/08/16

[#56648] [ruby-trunk - Bug #8795][Open] "Null byte in string error" on Marshal.load — "mml (McClain Looney)" <m@...>

17 messages 2013/08/16

[#56824] [ruby-trunk - Feature #8823][Open] Run trap handler in an independent thread called "Signal thread" — "ko1 (Koichi Sasada)" <redmine@...>

14 messages 2013/08/27

[#56878] [ruby-trunk - misc #8835][Open] Introducing a semantic versioning scheme and branching policy — "knu (Akinori MUSHA)" <knu@...>

11 messages 2013/08/30

[#56890] [ruby-trunk - Feature #8839][Open] Class and module should return the class or module that was opened — "headius (Charles Nutter)" <headius@...>

26 messages 2013/08/30

[#56894] [ruby-trunk - Feature #8840][Open] Yielder#state — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

14 messages 2013/08/30

[ruby-core:56863] [ruby-trunk - Feature #8793] Ruby 2.0 and Threads under HPUX

From: "michal@... (Michal Rokos)" <michal@...>
Date: 2013-08-29 11:08:50 UTC
List: ruby-core #56863
Issue #8793 has been updated by michal@rokos.cz (Michal Rokos).


On systems, I have a access to, the vps_pagesize is set to 16.

> /usr/sbin/kctune -v vps_pagesize
Tunable             vps_pagesize
Description         Default user page size (kBytes)
Module              vm
Current Value       16 [Default]
Value at Next Boot  16 [Default]
Value at Last Boot  16
Default Value       16
Constraints         vps_pagesize >= 4
                    vps_pagesize <= 4194304
Can Change          Immediately or at Next Boot

Regarding the _pthread_stack_info_np(), the API is
int _pthread_stack_info_np(pthread_t id, struct _pthread_stack_info *state);
and the _pthread_stack_info is
typedef struct _pthread_stack_info {
        int     stk_flags;

        /* Size of the stack */
        short   stk_stacksize_valid;
        size_t  stk_stacksize;

        /* Size of the guard page at the end of the stack */
        short   stk_guardsize_valid;
        size_t  stk_guardsize;

        /* Size of the Register Stack */
        short   stk_rsestacksize_valid;                                                                                                                       
        size_t  stk_rsestacksize;                                                                                                                             
                                                                                                                                                              
        /* Reserved for future use -- do not use, names WILL change */                                                                                        
        short   stk_reserved1_valid;                                                                                                                          
        size_t  stk_reserved1_size;                                                                                                                           
                                                                                                                                                              
        /* Address of the base of the stack */                                                                                                                
        void    *stk_stack_base;                                                                                                                              
                                                                                                                                                              
        /* Base of RSE BS.  Filled in only for IA64.  Do not use on PA. */                                                                                    
        void    *stk_rse_base;                                                                                                                                
                                                                                                                                                              
        /* Current stack pointer value */                                                                                                                     
        void    *stk_sp;                                                                                                                                      
                                                                                                                                                              
        /* Thread bsp.  Filled in only for IA64.  Do not use on PA. */                                                                                        
        void    *stk_bsp;                                                                                                                                     
                                                                                                                                                              
        /* Current program counter value */                                                                                                                   
        void    *stk_pc;                                                                                                                                      
                                                                                                                                                              
        /* Reserved for future use -- do not use, names WILL change */                                                                                        
        void    *stk_reserved[25];                                                                                                                            
} _pthread_stack_info_t;

But the obstacle with _pthread_stack_info_np() is that the polled thread 'id' has to be either stopped or suspended otherwise the _pthread_stack_info_np() is returning an error and does not provide values in 'state'. That is why i chose not to use is and use the _Asm_get_sp() instead.
----------------------------------------
Feature #8793: Ruby 2.0 and Threads under HPUX
https://bugs.ruby-lang.org/issues/8793#change-41410

Author: michal@rokos.cz (Michal Rokos)
Status: Closed
Priority: Normal
Assignee: 
Category: 
Target version: 


Use of Threads under HPUX currently raise rb_eNotImpError ("ruby engine can initialize only in the main thread") since the STACKADDR_AVAILABLE is not available.

This brings basic support for the get_stack() under HPUX.

This patch also resolves issue under HPUX where signals usually cause the coredump since the stack size is too small.

It seems that the patch is valid not only for Ruby 2.0, but also for Ruby 1.9.


-- 
http://bugs.ruby-lang.org/

In This Thread