<?xml version="1.0" encoding="UTF-8"?>
	<rss version="2.0"
		xmlns:content="http://purl.org/rss/1.0/modules/content/"
		xmlns:wfw="http://wellformedweb.org/CommentAPI/"
		xmlns:dc="http://purl.org/dc/elements/1.1/"
		xmlns:atom="http://www.w3.org/2005/Atom"

			>

	<channel>
		<title>Cycling 74  &#187;  Topic: Crash Report: call outlet() with an invalid outlet index</title>
		<atom:link href="http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/feed" rel="self" type="application/rss+xml" />
		<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/feed</link>
		<description></description>
		<pubDate>Wed, 19 Jun 2013 08:19:53 +0000</pubDate>
		<generator>http://bbpress.org/?v=2.2.4</generator>
		<language></language>

		
														
					
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-35772</guid>
					<title><![CDATA[Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-35772</link>
					<pubDate>Tue, 12 Feb 2008 06:56:51 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>I know it should be the responsibility of my Max object to check outlet indexes, but I just got burned by this *again* so here we go&#8230;</p>
<p>
Steps to Reproduce:</p>
<p>1. Build this MXJ max object:<br />
import com.cycling74.max.MaxObject;<br />
public class crash extends MaxObject {<br />
	public void bang() {<br />
		outlet(2, &#8220;goodbye&#8221;);<br />
	}<br />
}</p>
<p>2. Create this patch:<br />
#P button 93 63 15 0;<br />
#P newex 93 88 56 196617 mxj crash;<br />
#P connect 1 0 0 0;</p>
<p>3. Click the button. Max crashes.</p>
<p>
Expected behavior:<br />
Do not crash! Print an error to the Max window indicating an invalid outlet index was used.</p>
<p>
Crash Log:</p>
<p>Process:         MaxMSP [338]<br />
Path:            /Applications/MaxMSP 4.6/MaxMSP.app/Contents/MacOS/MaxMSP<br />
Identifier:      com.cycling74.MaxMSP46<br />
Version:         ??? (4.6.3)<br />
Code Type:       X86 (Native)<br />
Parent Process:  launchd [74]</p>
<p>Date/Time:       2008-02-11 22:52:52.218 -0800<br />
OS Version:      Mac OS X 10.5.1 (9B21)<br />
Report Version:  6</p>
<p>Exception Type:  EXC_BAD_ACCESS (SIGSEGV)<br />
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000050dd9a05<br />
Crashed Thread:  0</p>
<p>Application Specific Information:</p>
<p>Java information:<br />
 Version: Java HotSpot(TM) Client VM (1.5.0_13-119 mixed mode)<br />
 Virtual Machine version: Java HotSpot(TM) Client VM (1.5.0_13-119) for macosx-x86, built on Sep 28 2007 23:59:21 by root with gcc 4.0.1 (Apple Inc. build 5465)<br />
 Exception type: Bus Error (0xa) at pc=0x0002ff41</p>
<p>Current thread (0x17f014d0):  JavaThread &#8220;AWT-AppKit&#8221; [_thread_in_native, id=-1602322592]<br />
Stack: [0xbf800000,0xc0000000)<br />
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)<br />
j  com.cycling74.max.MaxObject.doOutlet(ILjava/lang/String;[Lcom/cycling74/max/Atom;)Z+0<br />
j  com.cycling74.max.MaxObject.outlet(ILjava/lang/String;[Lcom/cycling74/max/Atom;)Z+49<br />
j  com.cycling74.max.MaxObject.outlet(ILjava/lang/String;)Z+6<br />
j  crash.bang()V+4<br />
v  ~StubRoutines::call_stub<br />
Java Threads: ( => current thread )<br />
  0x17f0ebb0 JavaThread "AWT-Shutdown" [_thread_blocked, id=17867264]<br />
  0x17f0b8b0 JavaThread &#8220;Low Memory Detector&#8221; daemon [_thread_blocked, id=17573888]<br />
  0x17f0ae80 JavaThread &#8220;CompilerThread0&#8243; daemon [_thread_blocked, id=17570304]<br />
  0x17f0a930 JavaThread &#8220;Signal Dispatcher&#8221; daemon [_thread_blocked, id=17566720]<br />
  0x17f0a670 JavaThread &#8220;Surrogate Locker Thread (CMS)&#8221; daemon [_thread_blocked, id=17560064]<br />
  0x17f09d80 JavaThread &#8220;Finalizer&#8221; daemon [_thread_blocked, id=17556480]<br />
  0x17f09980 JavaThread &#8220;Reference Handler&#8221; daemon [_thread_blocked, id=17550336]<br />
=>0x17f014d0 JavaThread &#8220;AWT-AppKit&#8221; [_thread_in_native, id=-1602322592]<br />
Other Threads:<br />
  0x17f090d0 VMThread [id=17476608]<br />
  0x17f0c550 WatcherThread [id=17577472]</p>
<p>VM state:not at safepoint (normal execution)<br />
VM Mutex/Monitor currently owned by a thread: None</p>
<p>Heap<br />
 par new generation   total 4032K, used 1134K [0x1c3e0000, 0x1c7e0000, 0x1cbe0000)<br />
  eden space 3968K,  28% used [0x1c3e0000, 0x1c4fbac0, 0x1c7c0000)<br />
  from space 64K,   0% used [0x1c7c0000, 0x1c7c0000, 0x1c7d0000)<br />
  to   space 64K,   0% used [0x1c7d0000, 0x1c7d0000, 0x1c7e0000)<br />
 concurrent mark-sweep generation total 61440K, used 0K [0x1cbe0000, 0x207e0000, 0x2c3e0000)<br />
 concurrent-mark-sweep perm gen total 8192K, used 2772K [0x2c3e0000, 0x2cbe0000, 0x303e0000)</p>
<p>Virtual Machine arguments:<br />
 JVM args: -Xincgc -Xms64m -Xmx256m<br />
 Java command: <unknown><br />
 launcher type: generic</unknown></p>
<p>Thread 0 Crashed:<br />
0   com.cycling74.MaxMSP46        	0x0002ff41 typedmess_lookup + 9 (message.c:405)<br />
1   com.cycling74.MaxMSP46        	0x000e854f outlet_anything + 301 (inletoutlet.c:968)<br />
2   com.cycling74.MaxAPI          	0x00e665b9 outlet_anything + 59<br />
3   com.cycling74.mxj             	0x1797b16e mxj_outlet_anything + 139<br />
4   ???                           	0x1a3679b1 0 + 439777713<br />
5   ???                           	0x1a361b2b 0 + 439753515<br />
6   ???                           	0x1a361b2b 0 + 439753515<br />
7   ???                           	0x1a361b2b 0 + 439753515<br />
8   ???                           	0x1a35f227 0 + 439743015<br />
9   libjvm.dylib                  	0x17b9e63a 0x17a85000 + 1152570<br />
10  libjvm.dylib                  	0x17b9e356 0x17a85000 + 1151830<br />
11  libjvm.dylib                  	0x17b2868c 0x17a85000 + 669324<br />
12  libjvm.dylib                  	0x17c954fa JNI_CreateJavaVM_Impl + 106170<br />
13  com.cycling74.mxj             	0x1796eb22 maxjava_bang + 73<br />
14  com.cycling74.MaxMSP46        	0x000e7af3 outlet_bang + 283 (inletoutlet.c:657)<br />
15  com.cycling74.MaxMSP46        	0x00075eb5 vbutton_click(vbutton*, Point) + 35 (button.c:179)<br />
16  com.cycling74.MaxMSP46        	0x0000fbe8 box_click + 148 (box.c:123)<br />
17  com.cycling74.MaxMSP46        	0x000363b4 patcher_boxclick + 436 (patcher.c:2175)<br />
18  com.cycling74.MaxMSP46        	0x000382a1 patcher_click + 1195 (patcher.c:2424)<br />
19  com.cycling74.MaxMSP46        	0x0006a7c5 wind_click + 143 (window.c:1118)<br />
20  com.cycling74.MaxMSP46        	0x0006f880 wind_event + 394 (window.c:818)<br />
21  com.cycling74.MaxMSP46        	0x0002807d app_eventhandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 1273 (main.c:1658)<br />
22  com.apple.HIToolbox           	0x95a0e863 DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1181<br />
23  com.apple.HIToolbox           	0x95a0dc9d SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 405<br />
24  com.apple.HIToolbox           	0x95a2a08e SendEventToEventTarget + 52<br />
25  com.apple.HIToolbox           	0x95a3cb73 ToolboxEventDispatcherHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 1211<br />
26  com.apple.HIToolbox           	0x95a0ec1c DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 2134<br />
27  com.apple.HIToolbox           	0x95a0dc9d SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 405<br />
28  com.apple.HIToolbox           	0x95a2a08e SendEventToEventTarget + 52<br />
29  com.apple.HIToolbox           	0x95a97444 ToolboxEventDispatcher + 86<br />
30  com.apple.HIToolbox           	0x95a93c9e RunApplicationEventLoop + 222<br />
31  com.cycling74.MaxMSP46        	0x00027854 app_run + 52 (main.c:1519)<br />
32  com.cycling74.MaxMSP46        	0x00027afe main + 680 (main.c:416)<br />
33  com.cycling74.MaxMSP46        	0x00002ba2 _start + 216<br />
34  com.cycling74.MaxMSP46        	0x00002ac9 start + 41</p>
<p>[other threads omitted]</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122337</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122337</link>
					<pubDate>Wed, 13 Feb 2008 17:01:52 +0000</pubDate>
					<dc:creator>topher lafata</dc:creator>

					<description>
						<![CDATA[
						<p>The thinking with this is that checking automatically if your outlet  <br />
index is in range everytime adds overhead to the outlet call.<br />
If you wanted to subclass MaxObject with outletSafe it would be  <br />
pretty trivial. We don&#8217;t want to force the checking on someone<br />
who may not want it to happen every outlet call.<br />
t</p>
<p>On Feb 11, 2008, at 22:56 PM, Adam Murray wrote:</p>
<p>><br />
> I know it should be the responsibility of my Max object to check  <br />
> outlet indexes, but I just got burned by this *again* so here we go&#8230;<br />
><br />
><br />
> Steps to Reproduce:<br />
><br />
> 1. Build this MXJ max object:<br />
> import com.cycling74.max.MaxObject;<br />
> public class crash extends MaxObject {<br />
> 	public void bang() {<br />
> 		outlet(2, &#8220;goodbye&#8221;);<br />
> 	}<br />
> }<br />
><br />
> 2. Create this patch:<br />
> #P button 93 63 15 0;<br />
> #P newex 93 88 56 196617 mxj crash;<br />
> #P connect 1 0 0 0;<br />
><br />
> 3. Click the button. Max crashes.<br />
><br />
><br />
> Expected behavior:<br />
> Do not crash! Print an error to the Max window indicating an  <br />
> invalid outlet index was used.<br />
><br />
><br />
> Crash Log:<br />
><br />
> Process:         MaxMSP [338]<br />
> Path:            /Applications/MaxMSP 4.6/MaxMSP.app/Contents/MacOS/ <br />
> MaxMSP<br />
> Identifier:      com.cycling74.MaxMSP46<br />
> Version:         ??? (4.6.3)<br />
> Code Type:       X86 (Native)<br />
> Parent Process:  launchd [74]<br />
><br />
> Date/Time:       2008-02-11 22:52:52.218 -0800<br />
> OS Version:      Mac OS X 10.5.1 (9B21)<br />
> Report Version:  6<br />
><br />
> Exception Type:  EXC_BAD_ACCESS (SIGSEGV)<br />
> Exception Codes: KERN_INVALID_ADDRESS at 0x0000000050dd9a05<br />
> Crashed Thread:  0<br />
><br />
> Application Specific Information:<br />
><br />
> Java information:<br />
>  Version: Java HotSpot(TM) Client VM (1.5.0_13-119 mixed mode)<br />
>  Virtual Machine version: Java HotSpot(TM) Client VM (1.5.0_13-119)  <br />
> for macosx-x86, built on Sep 28 2007 23:59:21 by root with gcc  <br />
> 4.0.1 (Apple Inc. build 5465)<br />
>  Exception type: Bus Error (0xa) at pc=0x0002ff41<br />
><br />
> Current thread (0x17f014d0):  JavaThread &#8220;AWT- <br />
> AppKit&#8221; [_thread_in_native, id=-1602322592]<br />
> Stack: [0xbf800000,0xc0000000)<br />
> Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)<br />
> j  com.cycling74.max.MaxObject.doOutlet(ILjava/lang/String;[Lcom/ <br />
> cycling74/max/Atom;)Z+0<br />
> j  com.cycling74.max.MaxObject.outlet(ILjava/lang/String;[Lcom/ <br />
> cycling74/max/Atom;)Z+49<br />
> j  com.cycling74.max.MaxObject.outlet(ILjava/lang/String;)Z+6<br />
> j  crash.bang()V+4<br />
> v  ~StubRoutines::call_stub<br />
> Java Threads: ( => current thread )<br />
>   0x17f0ebb0 JavaThread "AWT-Shutdown" [_thread_blocked, id=17867264]<br />
>   0x17f0b8b0 JavaThread &#8220;Low Memory Detector&#8221; daemon  <br />
> [_thread_blocked, id=17573888]<br />
>   0x17f0ae80 JavaThread &#8220;CompilerThread0&#8243; daemon [_thread_blocked,  <br />
> id=17570304]<br />
>   0x17f0a930 JavaThread &#8220;Signal Dispatcher&#8221; daemon  <br />
> [_thread_blocked, id=17566720]<br />
>   0x17f0a670 JavaThread &#8220;Surrogate Locker Thread (CMS)&#8221; daemon  <br />
> [_thread_blocked, id=17560064]<br />
>   0x17f09d80 JavaThread &#8220;Finalizer&#8221; daemon [_thread_blocked,  <br />
> id=17556480]<br />
>   0x17f09980 JavaThread &#8220;Reference Handler&#8221; daemon  <br />
> [_thread_blocked, id=17550336]<br />
> =>0x17f014d0 JavaThread &#8220;AWT-AppKit&#8221; [_thread_in_native,  <br />
> id=-1602322592]<br />
> Other Threads:<br />
>   0x17f090d0 VMThread [id=17476608]<br />
>   0x17f0c550 WatcherThread [id=17577472]<br />
><br />
> VM state:not at safepoint (normal execution)<br />
> VM Mutex/Monitor currently owned by a thread: None<br />
><br />
> Heap<br />
>  par new generation   total 4032K, used 1134K [0x1c3e0000,  <br />
> 0x1c7e0000, 0x1cbe0000)<br />
>   eden space 3968K,  28% used [0x1c3e0000, 0x1c4fbac0, 0x1c7c0000)<br />
>   from space 64K,   0% used [0x1c7c0000, 0x1c7c0000, 0x1c7d0000)<br />
>   to   space 64K,   0% used [0x1c7d0000, 0x1c7d0000, 0x1c7e0000)<br />
>  concurrent mark-sweep generation total 61440K, used 0K  <br />
> [0x1cbe0000, 0x207e0000, 0x2c3e0000)<br />
>  concurrent-mark-sweep perm gen total 8192K, used 2772K  <br />
> [0x2c3e0000, 0x2cbe0000, 0x303e0000)<br />
><br />
> Virtual Machine arguments:<br />
>  JVM args: -Xincgc -Xms64m -Xmx256m<br />
>  Java command: <unknown><br />
>  launcher type: generic<br />
><br />
> Thread 0 Crashed:<br />
> 0   com.cycling74.MaxMSP46        	0x0002ff41 typedmess_lookup + 9  <br />
> (message.c:405)<br />
> 1   com.cycling74.MaxMSP46        	0x000e854f outlet_anything + 301  <br />
> (inletoutlet.c:968)<br />
> 2   com.cycling74.MaxAPI          	0x00e665b9 outlet_anything + 59<br />
> 3   com.cycling74.mxj             	0x1797b16e mxj_outlet_anything +  <br />
> 139<br />
> 4   ???                           	0x1a3679b1 0 + 439777713<br />
> 5   ???                           	0x1a361b2b 0 + 439753515<br />
> 6   ???                           	0x1a361b2b 0 + 439753515<br />
> 7   ???                           	0x1a361b2b 0 + 439753515<br />
> 8   ???                           	0x1a35f227 0 + 439743015<br />
> 9   libjvm.dylib                  	0x17b9e63a 0x17a85000 + 1152570<br />
> 10  libjvm.dylib                  	0x17b9e356 0x17a85000 + 1151830<br />
> 11  libjvm.dylib                  	0x17b2868c 0x17a85000 + 669324<br />
> 12  libjvm.dylib                  	0x17c954fa JNI_CreateJavaVM_Impl  <br />
> + 106170<br />
> 13  com.cycling74.mxj             	0x1796eb22 maxjava_bang + 73<br />
> 14  com.cycling74.MaxMSP46        	0x000e7af3 outlet_bang + 283  <br />
> (inletoutlet.c:657)<br />
> 15  com.cycling74.MaxMSP46        	0x00075eb5 vbutton_click <br />
> (vbutton*, Point) + 35 (button.c:179)<br />
> 16  com.cycling74.MaxMSP46        	0x0000fbe8 box_click + 148  <br />
> (box.c:123)<br />
> 17  com.cycling74.MaxMSP46        	0x000363b4 patcher_boxclick +  <br />
> 436 (patcher.c:2175)<br />
> 18  com.cycling74.MaxMSP46        	0x000382a1 patcher_click + 1195  <br />
> (patcher.c:2424)<br />
> 19  com.cycling74.MaxMSP46        	0x0006a7c5 wind_click + 143  <br />
> (window.c:1118)<br />
> 20  com.cycling74.MaxMSP46        	0x0006f880 wind_event + 394  <br />
> (window.c:818)<br />
> 21  com.cycling74.MaxMSP46        	0x0002807d app_eventhandler <br />
> (OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 1273 (main.c: <br />
> 1658)<br />
> 22  com.apple.HIToolbox           	0x95a0e863  <br />
> DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*,  <br />
> HandlerCallRec*) + 1181<br />
> 23  com.apple.HIToolbox           	0x95a0dc9d  <br />
> SendEventToEventTargetInternal(OpaqueEventRef*,  <br />
> OpaqueEventTargetRef*, HandlerCallRec*) + 405<br />
> 24  com.apple.HIToolbox           	0x95a2a08e  <br />
> SendEventToEventTarget + 52<br />
> 25  com.apple.HIToolbox           	0x95a3cb73  <br />
> ToolboxEventDispatcherHandler(OpaqueEventHandlerCallRef*,  <br />
> OpaqueEventRef*, void*) + 1211<br />
> 26  com.apple.HIToolbox           	0x95a0ec1c  <br />
> DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*,  <br />
> HandlerCallRec*) + 2134<br />
> 27  com.apple.HIToolbox           	0x95a0dc9d  <br />
> SendEventToEventTargetInternal(OpaqueEventRef*,  <br />
> OpaqueEventTargetRef*, HandlerCallRec*) + 405<br />
> 28  com.apple.HIToolbox           	0x95a2a08e  <br />
> SendEventToEventTarget + 52<br />
> 29  com.apple.HIToolbox           	0x95a97444  <br />
> ToolboxEventDispatcher + 86<br />
> 30  com.apple.HIToolbox           	0x95a93c9e  <br />
> RunApplicationEventLoop + 222<br />
> 31  com.cycling74.MaxMSP46        	0x00027854 app_run + 52 (main.c: <br />
> 1519)<br />
> 32  com.cycling74.MaxMSP46        	0x00027afe main + 680 (main.c:416)<br />
> 33  com.cycling74.MaxMSP46        	0x00002ba2 _start + 216<br />
> 34  com.cycling74.MaxMSP46        	0x00002ac9 start + 41<br />
><br />
> [other threads omitted]<br />
> &#8211;<br />
> Adam Murray<br />
> compusition.com</unknown></p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122338</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122338</link>
					<pubDate>Wed, 13 Feb 2008 17:20:16 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>Quote: topher lafata wrote on Wed, 13 February 2008 09:01<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
> The thinking with this is that checking automatically if your outlet  <br />
> index is in range everytime adds overhead to the outlet call.<br />
> If you wanted to subclass MaxObject with outletSafe it would be  <br />
> pretty trivial. We don&#8217;t want to force the checking on someone<br />
> who may not want it to happen every outlet call.<br />
> t<br />
> </p>
<p>I figured as much, and that definitely makes sense. Still, I wish there was a way it could bail on the current operation and not crash the whole Max application. At least the outletSafe() approach is indeed trivial to add when I need it.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122339</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122339</link>
					<pubDate>Thu, 14 Feb 2008 10:33:08 +0000</pubDate>
					<dc:creator>Peter Castine</dc:creator>

					<description>
						<![CDATA[
						<p>Quote: topher lafata wrote on Wed, 13 February 2008 18:01<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
> The thinking with this is that checking automatically if your outlet  <br />
> index is in range everytime adds overhead to the outlet call.<br />
> If you wanted to subclass MaxObject with outletSafe it would be  <br />
> pretty trivial. We don&#8217;t want to force the checking on someone<br />
> who may not want it to happen every outlet call.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>It&#8217;s probably far too late to change the implementation&#8230; but it seems that in the Java mindset, it would be more idiomatic to have checking the default behavior (as is the case with arrays and everything else I can think of), and either a flag or a subclass to turn range&#038;null checking off if the performance hit makes a difference. </p>
<p>It&#8217;s exceptional for an object to have a reason to speak to a null outlet, but seems it can happen. When programming C we&#8217;re used to the fact that any mishap can crash Max and program carefully (for the most part). Java gives you this feeling of comfort that no matter how stupidly you code, Everything Will Be All Right&#8230;</p>
<p>I&#8217;ll read the moral of Adam&#8217;s story to be that no programming language is really safe. Hang that in next to &#8220;Slow but steady wins the race&#8221; and &#8220;Look before you leap.&#8221;</p>
<p>&#8211; P.</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122340</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122340</link>
					<pubDate>Thu, 14 Feb 2008 17:39:02 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>Quote: Peter Castine wrote on Thu, 14 February 2008 02:33<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
> <br />
> It&#8217;s probably far too late to change the implementation&#8230; but it seems that in the Java mindset, it would be more idiomatic to have checking the default behavior </p>
<p>Yes, exactly. Crashing Max because of a bad outlet reference is caused by accessing an invalid location in memory. Java manages memory for you, so you get used to the idea that things like this won&#8217;t happen. But since MXJ calls into the underlying Max C implementation, of course this kind of crash is possible.</p>
<p>> <br />
> It&#8217;s exceptional for an object to have a reason to speak to a null outlet, but seems it can happen. &#8230; Java gives you this feeling of comfort that no matter how stupidly you code, Everything Will Be All Right&#8230;</p>
<p>Well I have had my share of stupid coding moments, but to put this in perspective: I was running into this problem with my ruby object, because I have no control over what scripts the user will try to evaluate. It is entirely possible, and very easy, to reference a null outlet from a script and instantly crash Max. So I had to jump through some extra hoops to make sure this can&#8217;t happen. Now I&#8217;m a little wiser :)</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122341</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122341</link>
					<pubDate>Thu, 14 Feb 2008 18:02:34 +0000</pubDate>
					<dc:creator>Joshua Kit Clayton</dc:creator>

					<description>
						<![CDATA[
						<p>
The cost of a size comparison and branching should be close to zero  <br />
as compared to the Java->Context switcth, so I think that this is  <br />
worth fixing (Max 5). However, that wont help you for now.</p>
<p>-Joshua</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122342</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122342</link>
					<pubDate>Thu, 14 Feb 2008 18:47:25 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>Quote: jkc wrote on Thu, 14 February 2008 10:02<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
> <br />
> The cost of a size comparison and branching should be close to zero  <br />
> as compared to the Java->Context switcth, so I think that this is  <br />
> worth fixing (Max 5). </p>
<p>I was wondering about that when Topher brought up the issue of overhead. Great to hear!</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122343</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122343</link>
					<pubDate>Fri, 15 Feb 2008 07:08:49 +0000</pubDate>
					<dc:creator>topher lafata</dc:creator>

					<description>
						<![CDATA[
						<p>yes. perhaps the original decision to optimize for this sort of thing  <br />
was premature given how things actually ended up playing out with the  <br />
JNI context switch.<br />
sorry you suffered as a result adam.<br />
t</p>
<p>On Feb 14, 2008, at 10:47 AM, Adam Murray wrote:</p>
<p>><br />
> Quote: jkc wrote on Thu, 14 February 2008 10:02<br />
> &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
>><br />
>> The cost of a size comparison and branching should be close to zero<br />
>> as compared to the Java->Context switcth, so I think that this is<br />
>> worth fixing (Max 5).<br />
><br />
> I was wondering about that when Topher brought up the issue of  <br />
> overhead. Great to hear!<br />
><br />
><br />
> &#8211;<br />
> Adam Murray<br />
> compusition.com</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122344</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122344</link>
					<pubDate>Sat, 27 Sep 2008 06:01:09 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>This behavior still exists in Max 5.0.4. I imagine this is a very easy fix, and avoiding crashes when possible is important, right? Probably the Java SDK is not getting much love these days. I&#8217;m sure Max 5 C SDK and Pluggo is a priority. Maybe one day soon, though?</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122345</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122345</link>
					<pubDate>Sat, 27 Sep 2008 10:03:06 +0000</pubDate>
					<dc:creator>Emmanuel Jourdan</dc:creator>

					<description>
						<![CDATA[
						<p>On 27 sept. 08, at 08:01, Adam Murray wrote:</p>
<p>> This behavior still exists in Max 5.0.4. I imagine this is a very  <br />
> easy fix, and avoiding crashes when possible is important, right?  <br />
> Probably the Java SDK is not getting much love these days. I&#8217;m sure  <br />
> Max 5 C SDK and Pluggo is a priority. Maybe one day soon, though?</p>
<p>
Thanks for your insistance. This is fixed for the next incremental. It  <br />
will post an error in the Max window, and stop crashing ;-)</p>
<p>ej</p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122346</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122346</link>
					<pubDate>Sat, 27 Sep 2008 11:19:19 +0000</pubDate>
					<dc:creator>nick rothwell / cassiel</dc:creator>

					<description>
						<![CDATA[
						<p>Talking of insistence: I mentioned a while ago that MaxObject has far  <br />
fewer outletHigh() overloads than outlet() ones. Is this intentional?</p>
<p>	&#8211; N.</p>
<p>
Nick Rothwell / Cassiel.com Limited<br />
<a href="http://www.cassiel.com" rel="nofollow">http://www.cassiel.com</a><br />
<a href="http://www.myspace.com/cassieldotcom" rel="nofollow">http://www.myspace.com/cassieldotcom</a><br />
<a href="http://www.last.fm/music/cassiel" rel="nofollow">http://www.last.fm/music/cassiel</a><br />
<a href="http://www.reverbnation.com/cassiel" rel="nofollow">http://www.reverbnation.com/cassiel</a><br />
<a href="http://www.linkedin.com/in/cassiel" rel="nofollow">http://www.linkedin.com/in/cassiel</a><br />
<a href="http://www.loadbang.net" rel="nofollow">http://www.loadbang.net</a></p>
						]]>
					</description>

					
					
				</item>

			
				<item>
					<guid>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122347</guid>
					<title><![CDATA[Re: Crash Report: call outlet() with an invalid outlet index]]></title>
					<link>http://cycling74.com/forums/topic/crash-report-call-outlet-with-an-invalid-outlet-index/#post-122347</link>
					<pubDate>Thu, 02 Oct 2008 02:05:35 +0000</pubDate>
					<dc:creator>Adam Murray</dc:creator>

					<description>
						<![CDATA[
						<p>Quote: Emmanuel Jourdan wrote on Sat, 27 September 2008 03:03<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
> <br />
> Thanks for your insistance. This is fixed for the next incremental. It  <br />
> will post an error in the Max window, and stop crashing ;-)<br />
> </p>
<p>Just tried out the new release. Thank you!! This fix will make my life easier. </p>
<p>My ajm.ruby object can no longer bring down Max because a script accesses a bad outlet. I had sort of addressed that problem before but I&#8217;m introducing some new features that make it really easy to crash Max that way due to a simple typo. Now I don&#8217;t have to worry about it. Awesome.</p>
						]]>
					</description>

					
					
				</item>

					
		
	</channel>
	</rss>

