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.

On Nov 5, 2006, at 11:02 AM, Victor Zverok S. 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 H. - [email protected] - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com

From: Eric H. [mailto:[email protected]]
Sent: Monday, November 06, 2006 12:41 AM

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.

Hi,

In message “Re: Problem with Thread’s memory (possible bug)”
on Mon, 6 Nov 2006 04:02:55 +0900, “Victor “Zverok” Shepelev”
[email protected] 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,

In message “Re: Problem with Thread’s memory (possible bug)”
on Mon, 6 Nov 2006 19:15:33 +0900, “Victor “Zverok” Shepelev”
[email protected] 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.

Yukihiro M. ([email protected])
6/11/2006 15:39:43

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.

From: Yukihiro M. [mailto:[email protected]]
Sent: Monday, November 06, 2006 10:46 AM

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


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 M. [mailto:[email protected]]
Monday, November 06, 2006 3:40 PM

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