So this is sort of a thread bump I guess. &nbsp;I am still having the below issue; however I am now attaching more information I hope. &nbsp;I have ObjC classes that I have written that invoke my Mono classes. &nbsp;These are working and I have written an app utilizing these. I am now experimenting using a library called MacFuse, in essence I pass it an ObjC object which it holds and calls (a delegate object). &nbsp;When that object is called from MacFuse everything works except for when invoking mono, my variables come back null.<div>
<br></div><div>The below function is the function that errors out. &nbsp;My ObjC class still has all the data it had and when calling this same object from my main thread it works, so it can&#39;t be garbage collection for either ObjC or Mono because I can still access all of the data from my main thread. &nbsp;The error is only when being called from another API (and in this case I believe the OSX kernel).</div>
<div><br></div><div>The below function outputs the following when being called from the MacFuse thread:</div><div><div>2009-01-25 18:28:12.885 InvokeMonoTest[670] val is null in getStringFieldValue</div><div>2009-01-25 18:28:12.885 InvokeMonoTest[670] p is null in getStringFieldValue</div>
<div>2009-01-25 18:28:12.885 InvokeMonoTest[670] &nbsp;ERROR in attributesOfItemAtPath &nbsp; *** -[NSPlaceholderString initWithUTF8String:]: NULL cString</div></div><div><br></div><div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">
-(NSString*) getStringFieldValue: (NSString*) FieldName</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">{</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>MonoClassField *field;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>MonoString* val;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-style-span" style="white-space: pre; ">        </span>mono_thread_attach(domain);<br>
</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">&nbsp;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>field = mono_class_get_field_from_name ([MonoGlobals monoFClass], [FieldName UTF8String]);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #760f50">if</span> (!field) {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>fprintf (stderr, <span style="color: #891315">&quot;Can&#39;t find field %s in MyType\n&quot;</span>,[FieldName UTF8String]);</p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>exit (<span style="color: #0000ff">1</span>);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #891315"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #760f50">if</span><span style="color: #000000"> (!fsObject) NSLog(</span>@&quot;fsObject is null in getStringFieldValue&quot;<span style="color: #000000">);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>mono_field_get_value (fsObject, field, &amp;val);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #891315"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #760f50">if</span><span style="color: #000000"> (!val) NSLog(</span>@&quot;val is null in getStringFieldValue&quot;<span style="color: #000000">);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #760f50">char</span> *p;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>p = mono_string_to_utf8 (val);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">        </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #891315"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">        </span></span><span style="color: #760f50">if</span><span style="color: #000000"> (!p) NSLog(</span>@&quot;p is null in getStringFieldValue&quot;<span style="color: #000000">);</span></p>

<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>NSString* retStr = [[NSString alloc] initWithUTF8String:p];</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span style="color: #760f50">return</span> retStr;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">}</p></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br><br><div class="gmail_quote">On Wed, Nov 26, 2008 at 7:20 PM, Kevin Heeney <span dir="ltr">&lt;<a href="mailto:koheeney@gmail.com">koheeney@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word">
<div>Okay, so I think it is an issue somehow with how I am invoking Mono. &nbsp;When being called from the main thread, the following code works. &nbsp;When being called from a&nbsp;separate&nbsp;thread, on the same object,&nbsp;<span style="font-family:Monaco;font-size:10px">mono_string_to_utf8 (val)&nbsp;</span>below returns NULL but does not throw an exception.</div>
<div><br></div><div><br></div><div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>mono_thread_attach(domain);</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><br></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>MonoClassField *field;</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>MonoString* val;</font></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:14px">
<br></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>field = mono_class_get_field_from_name (myMonoclass, [FieldName UTF8String]);</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:14px"><br></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>mono_field_get_value (myMonoObject, field, &amp;val);</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span></font><font face="Monaco" size="2" color="#760f50" style="font:10.0px Monaco;color:#760f50">char</font><font face="Monaco" size="2" style="font:10.0px Monaco"> *p;</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>p = mono_string_to_utf8 (val); &nbsp;//p here will be null when being called from a secondary thread.</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;min-height:14px"><br></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" style="font:10.0px Monaco"><span style="white-space:pre">        </span>NSString* retStr = [[NSString alloc] initWithUTF8String:p]; //on secondary threads, this line throws the exception &quot;<span style="font-family:Helvetica;font-size:12px">-[NSPlaceholderString initWithUTF8String:]: NULL cString&quot; because p is null</span></font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2" color="#760f50" style="font:10.0px Monaco;color:#760f50"><span style="white-space:pre">        </span>return</font><font face="Monaco" size="2" style="font:10.0px Monaco"> retStr;</font></div>
<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><font face="Monaco" size="2"><span style="font-size:10px"><br></span></font></div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">
<font face="Monaco" size="2"><span style="font-size:10px">I am doing more checks (like checking to make sure the field is found, but I have removed that code in this sample). &nbsp;</span></font></div><div><font face="Monaco" size="2"><span style="font-size:10px"><br>
</span></font></div></div><div>Any suggestions?</div><div><br></div><div>Thanks,</div><div>Kevin</div><div><div></div><div class="Wj3C7c"><div><br></div><div><br></div><br><div><div>On Nov 26, 2008, at 1:15 PM, Kevin Heeney wrote:</div>
<br><blockquote type="cite"><span style="white-space:pre">        </span>I was thinking I had to pass mono_thread_attach a reference to a thread. &nbsp;Would calling mono_thread_attach(myDomain); work? &nbsp; If so, I might have a&nbsp;different&nbsp;issue.<div>
<br></div><div>Thanks,</div><div>Kevin<br><div><br></div><div><div><div>On Nov 26, 2008, at 1:03 PM, Kevin Heeney wrote:</div><br><blockquote type="cite"><span style="white-space:pre"><font face="Arial">        </font></span><font face="Arial">Is there any way to register an NSThread with Mono? &nbsp;I am using a 3rd party framework which I pass a delegate class and it launches a new Thread. &nbsp;I have that class getting a reference to this created Thread using [NSThread currentThread]. &nbsp;I now need to call Mono from this thread but I need to&nbsp;register&nbsp;the thread using &quot;</font><span style="color:rgb(41, 41, 41)"><font face="Arial">mono_thread_attach&quot; I believe. &nbsp;Is there anyway that I can do this with an NSThread?</font></span><div>
<font color="#292929"><font face="Arial"><br></font></font></div><div><font color="#292929"><font face="Arial">Thanks,</font></font></div><div><font color="#292929"><font face="Arial">Kevin</font></font></div></blockquote>
</div><br></div></div></blockquote></div><br></div></div></div></blockquote></div><br></div>