Problem with Thread's memory (possible bug)

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.

First of all, try to reproduce in Ruby 1.8.5.

···

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

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

http://trackmap.robotcoop.com

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.

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.

···

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:

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 :frowning:
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:

···

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:

-----
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.

Hi,

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.

···

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:

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

Hi,

>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.

···

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:

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.