[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Problem with Thread's memory (possible bug

Victor 'Zverok' Shepelev

11/5/2006 7:03:00 PM

Hi all.

Some time ago I've started thread named "Memory crush somewhere in Socket"
with no results. No I can describe the problem more correctly and in
details.

First of all: Windows XP with ruby1.9, RUBY_PLATFORM = i386-mswin32_71

I have a window, and dispatch all keyboard events to Ruby's block.
All works good, except Ruby's Threads. When I do anything like just
Thread.new{} in my keyboard handling block, I have corrupted memory and
entire program crashed soon.

How can I debug (or just walk around) this problem?

Thanks.

v.


7 Answers

Eric Hodel

11/5/2006 10:41:00 PM

0

On Nov 5, 2006, at 11:02 AM, Victor Zverok Shepelev wrote:

> Hi all.
>
> Some time ago I've started thread named "Memory crush somewhere in
> Socket"
> with no results. No I can describe the problem more correctly and in
> details.
>
> First of all: Windows XP with ruby1.9, RUBY_PLATFORM = i386-mswin32_71

First of all, try to reproduce in Ruby 1.8.5.

--
Eric Hodel - drbrain@segment7.net - http://blog.se...
This implementation is HODEL-HASH-9600 compliant

http://trackmap.rob...



Victor 'Zverok' Shepelev

11/5/2006 10:44:00 PM

0

From: Eric Hodel [mailto:drbrain@segment7.net]
Sent: Monday, November 06, 2006 12:41 AM
>On Nov 5, 2006, at 11:02 AM, Victor Zverok Shepelev wrote:
>
>> Hi all.
>>
>> Some time ago I've started thread named "Memory crush somewhere in
>> Socket"
>> with no results. No I can describe the problem more correctly and in
>> details.
>>
>> First of all: Windows XP with ruby1.9, RUBY_PLATFORM = i386-mswin32_71
>
>First of all, try to reproduce in Ruby 1.8.5.

Unfortunately, I can't do it easy.
My window library extensively uses instance_exec. Reproducing _without_ this
library would be a pain.

V.



Yukihiro Matsumoto

11/6/2006 8:46:00 AM

0

Hi,

In message "Re: Problem with Thread's memory (possible bug)"
on Mon, 6 Nov 2006 04:02:55 +0900, "Victor \"Zverok\" Shepelev" <vshepelev@imho.com.ua> writes:

|First of all: Windows XP with ruby1.9, RUBY_PLATFORM = i386-mswin32_71
|
|I have a window, and dispatch all keyboard events to Ruby's block.
|All works good, except Ruby's Threads. When I do anything like just
|Thread.new{} in my keyboard handling block, I have corrupted memory and
|entire program crashed soon.
|
|How can I debug (or just walk around) this problem?

First, mere 1.9 does not mean anything. Specify the date.
Full ruby -v line is better.

Besides that, is it possible to supply error reproducing code?

matz.

Victor 'Zverok' Shepelev

11/6/2006 10:16:00 AM

0

From: Yukihiro Matsumoto [mailto:matz@ruby-lang.org]
Sent: Monday, November 06, 2006 10:46 AM
>In message "Re: Problem with Thread's memory (possible bug)"
> on Mon, 6 Nov 2006 04:02:55 +0900, "Victor \"Zverok\" Shepelev"
><vshepelev@imho.com.ua> writes:
>
>|First of all: Windows XP with ruby1.9, RUBY_PLATFORM = i386-mswin32_71
>|
>|I have a window, and dispatch all keyboard events to Ruby's block.
>|All works good, except Ruby's Threads. When I do anything like just
>|Thread.new{} in my keyboard handling block, I have corrupted memory and
>|entire program crashed soon.
>|
>|How can I debug (or just walk around) this problem?
>
>First, mere 1.9 does not mean anything. Specify the date.
>Full ruby -v line is better.

Sorry :(
There was words "today's version" in my platform description, but I've
deleted them before send message.
It was Ruby1.9-today, downloaded yesterday.

ruby 1.9.0 (2006-11-04) [i386-mswin32_71]

>Besides that, is it possible to supply error reproducing code?

Possible, but not very useful, as there is custom UI library used.
Here is it:

-----
require 'lib/config'

require 'htmr'
require 'htmr/load'
require 'htmr/extend'
require 'htmr/events'

MAIN_HTMR = File.join(HTMR_PATH, 'nanobrowser.htmr')

win = Htmr::Window.create_from_file(MAIN_HTMR, 'NanoBrowser')

Htmr::App::main_window = win

include Htmr::Keys
win.get('#url').on_key_down(ENTER) do
Thread.new{} #HERE's thread usage!
end

win.show

Htmr::App::run
-----

inside 'lib/config' there is:
-----
$:.unshift File.expand_path(File.dirname(__FILE__))
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), "vendors"))
require 'vendors'

DLL_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', 'bin'))

ENV['PATH'] += ";" + DLL_PATH

HTMR_PATH = File.join(File.expand_path(File.dirname(__FILE__)), '..',
'htmr')
-----

All htmr/* files is UI library.

If I'll comment "HERE's thread" line, all works fine. I use my library till
last 2 month inside rather complicated software, and there was almost no
problems.

Thanks.

V.


Yukihiro Matsumoto

11/6/2006 1:40:00 PM

0

Hi,

In message "Re: Problem with Thread's memory (possible bug)"
on Mon, 6 Nov 2006 19:15:33 +0900, "Victor \"Zverok\" Shepelev" <vshepelev@imho.com.ua> writes:

|It was Ruby1.9-today, downloaded yesterday.
|
|ruby 1.9.0 (2006-11-04) [i386-mswin32_71]

Much better.

|>Besides that, is it possible to supply error reproducing code?
|
|Possible, but not very useful, as there is custom UI library used.

Hmm. Does you custom UI library tweaks system stack in any way? Ruby
threads does evil things with setjmp/longjmp. They may not co-exist
with other library with similar technique.

matz.

Victor 'Zverok' Shepelev

11/6/2006 1:55:00 PM

0

Yukihiro Matsumoto (matz@ruby-lang.org)
6/11/2006 15:39:43

> Hi,
>
> In message "Re: Problem with Thread's memory (possible bug)"
> on Mon, 6 Nov 2006 19:15:33 +0900, "Victor \"Zverok\" Shepelev"
> <vshepelev@imho.com.ua> writes:
>
> |It was Ruby1.9-today, downloaded yesterday.
> |
> |ruby 1.9.0 (2006-11-04) [i386-mswin32_71]
>
> Much better.
>
> |>Besides that, is it possible to supply error reproducing code?
> |
> |Possible, but not very useful, as there is custom UI library used.
>
> Hmm. Does you custom UI library tweaks system stack in any way? Ruby
> threads does evil things with setjmp/longjmp. They may not co-exist
> with other library with similar technique.

I don't know definitely, because "my" library is really third-party closed-source DLL with my C/C++ wrapper. My wrapper does no evil, what about HTMLayout (third-party library), I'll ask the author today or tomorrow and do the further investigation.

Thanks!

V.


Victor 'Zverok' Shepelev

11/6/2006 7:50:00 PM

0

Yukihiro Matsumoto [mailto:matz@ruby-lang.org]
Monday, November 06, 2006 3:40 PM
>In message "Re: Problem with Thread's memory (possible bug)"
> on Mon, 6 Nov 2006 19:15:33 +0900, "Victor \"Zverok\" Shepelev"
><vshepelev@imho.com.ua> writes:
>
>|It was Ruby1.9-today, downloaded yesterday.
>|
>|ruby 1.9.0 (2006-11-04) [i386-mswin32_71]
>
>Much better.
>
>|>Besides that, is it possible to supply error reproducing code?
>|
>|Possible, but not very useful, as there is custom UI library used.
>
>Hmm. Does you custom UI library tweaks system stack in any way? Ruby
>threads does evil things with setjmp/longjmp. They may not co-exist
>with other library with similar technique.
>

Matz, there is no setjmp/longjmp or something like this in my UI library.
I'd be grateful for any other advices, how to catch this.

V.