Forums > Java

net.tcp.* connection problems leading to consistent crashes

June 17, 2006 | 9:13 am

Hello,

I have reported this problem a couple of months ago to the general
Max list but have never received an answer.
My problem concerns mxj net.tcp.send, and is as follows:

1. I have computer A sitting behind a NAT router connecting to
computer B on the Internet via net.tcp.send.
2. On computer B I have a Max patch running with an instance of mxj
net.tcp.recv.
3. This instance now receives instructions from computer A to open
another patch and to send some messages to the originating computer
(i.e. A), after setting an instance of mxj net.tcp.send to computer
A’s IP address.

The problem arises when
1. the address computer B receives computer A’s local IP address
(instead of its public address) and tries to send messages to this IP
address.
2. upon noticing the error, computer B terminates the connection and
closes the Max patch with the mxj net.tcp.send instance with 30
active packets waiting to be delivered.
3. Max crashes after approx. 90 seconds with the following crash log:

Thread 4 Crashed:
0 libjvm.dylib 0x9a757c74 JVM_GetLastErrorString
+ 8420
1 libjvm.dylib 0x9a63e998 JNI_CreateJavaVM_Impl
+ 44252
2 libjvm.dylib 0x9a63e88c JNI_CreateJavaVM_Impl
+ 43984
3 libSystem.B.dylib 0x9002ba68 _pthread_body + 96

It seems to me that the problem exists due to a miscommunication
between Max and JVM.

Georg


June 18, 2006 | 4:58 pm

> I have reported this problem a couple of months ago to the general
> Max list but have never received an answer.

The answer I gave you then was that I can’t reproduce this crash. I
just tried to emulate the situation you describe and I still can’t
reproduce the crash. Until you can create an example patch that
reproducibly crashes we will probably not make much progress.

Ben


June 19, 2006 | 10:16 am

Would it help if I gave you VNC access to our server? Because,
otherwise, you may never be able to witness the crash, as it involves
a remote XServe server running Max/MSP. Have you ever used Chicken of
the VNC? If you’re fine with my suggestion I’ll send you the access
data offline.

Georg


June 20, 2006 | 11:12 am

Hello Ben,

I painstakingly created after much trial and error a patch which will
most likely demonstrate the crash on your machine with no need for an
external server. It crashes my machine (Powerbook G4 1.25 GHz, Mac OS
X 10.4.6, Max 4.5.7, Java 1.4.2) and a XServe (G4 1.0 GHz, Mac OS X
Server 10.4.6, Max 4.5.7, Java 1.5). Please move the enclosed folder
into the patches folder after moving the Java classes to the net->tcp
folder.

I’m realizing that the crash may even have something to do with the
printing of an error message to the Max window, but I’ll leave this
to you to figure this out, as this is only an educated guess.

Georg

On Jun 18, 2006, at 6:58 PM, Ben Nevile wrote:

>> I have reported this problem a couple of months ago to the general
>> Max list but have never received an answer.
>
> The answer I gave you then was that I can’t reproduce this crash. I
> just tried to emulate the situation you describe and I still can’t
> reproduce the crash. Until you can create an example patch that
> reproducibly crashes we will probably not make much progress.
>
> Ben
>
>
>
>
>> My problem concerns mxj net.tcp.send, and is as follows:
>>
>> 1. I have computer A sitting behind a NAT router connecting to
>> computer B on the Internet via net.tcp.send.
>> 2. On computer B I have a Max patch running with an instance of mxj
>> net.tcp.recv.
>> 3. This instance now receives instructions from computer A to open
>> another patch and to send some messages to the originating computer
>> (i.e. A), after setting an instance of mxj net.tcp.send to computer
>> A’s IP address.
>>
>> The problem arises when
>> 1. the address computer B receives computer A’s local IP address
>> (instead of its public address) and tries to send messages to this IP
>> address.
>> 2. upon noticing the error, computer B terminates the connection and
>> closes the Max patch with the mxj net.tcp.send instance with 30
>> active packets waiting to be delivered.
>> 3. Max crashes after approx. 90 seconds with the following crash log:
>>
>> Thread 4 Crashed:
>> 0 libjvm.dylib 0x9a757c74
>> JVM_GetLastErrorString
>> + 8420
>> 1 libjvm.dylib 0x9a63e998
>> JNI_CreateJavaVM_Impl
>> + 44252
>> 2 libjvm.dylib 0x9a63e88c
>> JNI_CreateJavaVM_Impl
>> + 43984
>> 3 libSystem.B.dylib 0x9002ba68 _pthread_body + 96
>>
>> It seems to me that the problem exists due to a miscommunication
>> between Max and JVM.
>>
>> Georg
>>
>>


June 20, 2006 | 12:39 pm

I wonder if it is related to a crash I found when trying to openConnection() or openStream() to a URL. If I would post, I would crash, however System.out.println would work fine. Perhaps try that? Total shot in the dark.

Ah.. Max and idiosyncrasies.


June 20, 2006 | 9:07 pm

I simply extended the existing net.tcp.send and receive objects by
some simple list processing stuff. The problem probably lies in the
sheer size of the packets not being able to be delivered when the IP
address doesn’t exist. After time-out net.tcp.packer (as I call my
pbject) prints an error message to the Max window and I’m wondering
whether that’s where the problems lies. Unfortunately, I can’t modify
the TcpSender class.

Best,

Georg

On Jun 20, 2006, at 2:39 PM, vade wrote:

>
> I wonder if it is related to a crash I found when trying to
> openConnection() or openStream() to a URL. If I would post, I would
> crash, however System.out.println would work fine. Perhaps try
> that? Total shot in the dark.
>
> Ah.. Max and idiosyncrasies.


Viewing 6 posts - 1 through 6 (of 6 total)