Hi Laurent,

I've just noticed Geoff's note to the bug.

Following on from Geoff's #1, and as an alternative to the direction you and
Sledge have been pursuing, I wondered whether monobjc could be modified so
that the dealloc method swizzle would be a native (unmanaged) method which
tests whether calling the managed mono dealloc "override" would cause a
thread to be re-registered with mono; and only call mono if ok.

In other words, in pseudo code:

// Native ObjectiveC code
native_swizzle_dealloc()
{
        if (!will cause re-registration)
        {
                // Call the mono managed code
                NSObjectImposter.dealloc();
        }
}

Could the test even be as crude as "is this a dealloc of a
NSThreadWillExitNotification instance?"?

Obviously this isn't a simple suggestion, and is a fundamental change to the
core of monobjc.  And it causes monobjc to have a native, unmanaged
component, which will complicate deployment [perhaps the NAnt.MonobjcTasks
tool could add the unmanaged swizzle into the C code it creates for
mkbundles].

I've not written any native ObjectiveC swizzle code so I'm not really sure
how feasible this suggestion is.

Thank you again for all the hard work being put into this!

Regards,
Anthony

-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Laurent Etiemble
Sent: Tuesday, October 27, 2009 9:53 AM
To: [email protected]
Subject: Re: [[email protected]] Re: [[email protected]] Feeback
Wanted on Snow Leopard

Hello,

Good to hear that we are heading in the right direction (Thank you
again for Sledge Ham for its contribution). I am trying to get a clean
patch to submit and clear the remaning minor memory leaks left.

As you may have noticed, there was no release of Monobjc lately, thus
breaking the near 1-month release cycle. It is because I am focused on
solving the Snow Leopard issue before anything else. If you need a
particular fix, mail me and I will provide the patch.

I will post update of the Snow Leopard issue, as soon as I have some news.

Regards, Laurent Etiemble.

2009/10/27 Duane Wandless <[email protected]>:
> I can confirm as well that Laurent's patch fixes the issue seen in my
> application.   And thank you very much for making the 2.6_M patch.
>
> To get mkbundle to work I edited
> /Library/Frameworks/Mono.framework/Versions/2.6_M/etc/mono/config to have
> this line:
>         <dllmap dll="MonoPosixHelper"
>
target="/Library/Frameworks/Mono.framework/Versions/2.6_M/lib/libMonoPosixHe
lper.dylib"
> os="!windows" />
>
> adding the full path allowed mkbundle to work.
>
> Duane
>
> On Sat, Oct 24, 2009 at 2:02 AM, Anthony Bowker <[email protected]>
wrote:
>>
>> I second that.  Thank you Laurent and Sledge for your hard work thus far.
>>
>>
>>
>> I've been following the e-mail exchange and the direction of your
solution
>> seems sound.  I haven't built Mono myself at present, but I've tested the
>> 2.6_M patch and my app then works well on SL - had it running today for
over
>> 4 hours without a problem.
>>
>>
>>
>> Likewise, if there are updated binaries to test I'd be happy to help.
>>
>>
>>
>> Many Thanks!
>>
>> Anthony
>>
>>
>>
>> From: Franky De Meyer [mailto:[email protected]]
>> Sent: Tuesday, October 20, 2009 1:08 PM
>>
>> To: [email protected]
>> Subject: RE: [[email protected]] Re: [[email protected]]
>> Feeback Wanted on Snow Leopard
>>
>>
>>
>> A big thanks to Laurent and Sledge for all the hard work in debugging
this
>> pesky problem! It is really greatly appreciated...
>>
>>
>>
>> Laurent, I have installed your patched Mono on my Snow Leopard system,
and
>> can confirm that my software appears to work smoothly now! Great job!
>>
>> I know the patch will not be the final fix, but in any case it shows that
>> you guys have a good grip on what exactly goes wrong.
>>
>>
>>
>> If you want any more or different tests, let me know.
>>
>>
>>
>> Thanks once more!
>>
>> Franky
>>
>>
>>
>>
>>
>>
>>
>> From: [email protected] [mailto:[email protected]] On
>> Behalf Of Laurent Etiemble
>> Sent: maandag 19 oktober 2009 11:41
>> To: [email protected]
>> Subject: Re: [[email protected]] Re: [[email protected]]
>> Feeback Wanted on Snow Leopard
>>
>>
>>
>> Hello,
>>
>>
>>
>> I have built a variant of the Mono framework on Snow Leopard with an
>> improved patch for bug #537764. For those who are interested, you can:
>>
>> - install an official version of Mono to get all the soft links in place
>>
>> - download the archive:
>> http://build.monobjc.net/binaries/Mono.framework.2.6_M.tar.bz2
>>
>> - unarchive it under /Library/Frameworks/Mono.framework/Versions
>>
>> - relink the current version to the new one (sudo rm Current && sudo ln
-s
>> 2.6_M Current)
>>
>>
>>
>> Beware that:
>>
>> - The archive only contains a small subset of the Mono framework (Mono +
>> NAnt)
>>
>> - You should be able to package and run Monobjc's applications
>>
>> - It does not contains all the third-party assemblies or the GTK parts.
>>
>> - It will probably only work on Snow Leopard
>>
>>
>>
>> My goal is to know if the patch is robust enough to be pushed to Mono
>> team.
>>
>>
>>
>> Regards, Laurent Etiemble.
>>
>>
>>
>> 2009/10/12 Franky De Meyer <[email protected]>
>>
>> Thanks for the extra tips Kenny, but I must admit I've now given up on
>> trying to build Mono on Snow Leopard myself.
>> This seems like a rather specialized matter, and requires more insight in
>> the Mono build process (+ related Linux tools) than I can handle.
>>
>> I noticed the new installer for OSX today (on mono-project), version
>> 2.4.2.3_6, so I was anxious to try it out on the SimpleCocoaApp on Snow
>> Leopard, but unfortunately it still crashes, so it looks like the
proposed
>> patch is not in it yet...
>>
>> This is all quite depressing. Just as I was finally getting ready to
>> release
>> my app for OSX, it turns out that many of the potential users have
already
>> upgraded to Snow Leopard, so it's back to zero now. Sometimes I wonder
>> whether I shouldn't have just taken the plunge and should have ported the
>> entire app to XCode. Of course that would mean that none of my code would
>> have been shared between Windows and Mac, while with the mono/monobjc
>> solution I can have 70% common code.
>>
>> In any case, thanks again to Laurent for the great work and trying to
help
>> us out with this Mono problem. And thanks to you Kenny, for your efforts
>> and
>> guidance.
>> Let's hope we can soon join the Snow Leopard gang ...
>>
>> Franky
>>
>>
>> -----Original Message-----
>> From: Kenny Clement [mailto:[email protected]]
>>
>> Sent: vrijdag 2 oktober 2009 15:23
>> To: [email protected]
>> Subject: Re: [[email protected]] Re: [[email protected]]
>> Feeback
>> Wanted on Snow Leopard
>>
>> Franky,
>>
>> For glib, I'm using the following:
>>
>> CC="cc -L/Users/fdm/Mono/lib" CFLAGS="-I/Users/fdm/Mono/include -m32"
>> PATH=/Users/fdm/Mono/bin:$PATH ./configure --prefix=/Users/fdm/Mono
>>
>> sorry, I forgot that CC and extra CFLAGS in my previous mail.
>> When I got your gettext error, it was because my mono prefix was not in
>> the path, however, you say it is.
>>
>> I also did an upgrade from leopard to Snow.
>>
>> My application is now working without crashes, however, on a certain
>> window in my app, CPU spikes to 100% whenever something on the form is
>> changed.
>> This CPU spike only occurs after a few hours (or lots of activity), it
>> seems to 'build up' and after a while, the app is no longer usable.
>>
>> Still investigating, trying to turn off some bindings, ... seeing if
>> that helps or not.
>> I didn't get this behaviour on Leopard / old mono, so it must be
>> something in either Snow Leopard, or the new Mono (after all, it is an
>> svn build, not an official release).
>>
>> I also see some issues when building my app with integrated mono, it
>> fails a lot more than on regular leopard.
>>
>> I don't think either of those issues is related to the patch from
>> Laurent/Sledge Ham, but we're still testing...
>>
>> mvg,
>>
>> - Kenny
>>
>>
>> Franky De Meyer wrote:
>> > Thanks for the extra info for the Snow Leopard build.
>> >
>> > It helped me get a little further now: "GNU Gettext" and "pkg-config"
>> > now
>> > both build OK on Snow Leopard.
>> > The "glib" configure however stops with following error:
>> >
>> > (After installing Gettext and pkg-config in /Users/fdm/Mono)
>> > When I execute:
>> >
>> > cd glib-2.22.0
>> > CFLAGS="-m32"
>> > CXXFLAGS="-m32"
>> > CC="cc -L/Users/fdm/Mono/lib"
>> > ./configure --prefix=/Users/fdm/Mono
>> >
>> > I get the following output: (only the last few lines shown)
>> > ----------------
>> > ...
>> > checking for libintl.h... yes
>> > checking for ngettext in libc... no
>> > checking for bindtextdomain in -lintl... no
>> > checking if -liconv is needed to use gettext...
>> > checking for ngettext in -lintl... no
>> > configure: error:
>> > *** You must have either have gettext support in your C library, or use
>> the
>> > *** GNU gettext library.
>> > (http://www.gnu.org/software/gettext/gettext.html
>> > ------------------
>> >
>> > So, there must still be something I'm doing wrong. The install of
>> > gettext-0.17 was OK, and was built with the same settings as glib.
>> > I can just type gettext at the command prompt however, and it is
found.I
>> > have the latest XCode version. I did do an upgrade from Leopard to Snow
>> > Leopard and not a fresh install. Maybe that has something to do with
it.
>> >
>> > In any case, thanks for your help.
>> >
>> > BTW, does your app work OK on Snow Leopard, with the latest patch from
>> > Laurent?
>> >
>> > Regards,
>> > Franky
>> >
>> >
>> >
>> >
>> >
>> > From: Kenny Clement [mailto:[email protected]]
>> > Sent: donderdag 1 oktober 2009 9:56
>> > To: [email protected]
>> > Subject: Re: [[email protected]] Re: [[email protected]]
>> Feeback
>> > Wanted on Snow Leopard
>> >
>> > Franky,
>> >
>> > I've struggled with the same issues.
>> > In order to build Mono on Snow Leopard, you need the CFLAGS and
CXXFlags
>> set
>> > to -m32 for Mono and all the components required for it (gettext,
>> > pkg-config, libiconv, glib):
>> > example:
>> >
>> > CFLAGS="-m32" CXXFLAGS="-m32" ./configure --prefix=/mono
>> > make
>> > make install
>> >
>> > (note that the prefix should be changed to where-ever you want to
>> > install
>> > it.)
>> > Add the prefix path to your envvar PATH if it is not yet in there.
>> > (otherwise it will complain about not finding gettext, ...)
>> >
>> > In case you get 'deprecated' errors in ucontext, add the following line
>> > at
>> > the top in /usr/include/ucontext.h:
>> > #define _XOPEN_SOURCE 500
>> >
>> > (I'm sure there is a better way, but this works for me.)
>> >
>> > nant is a separate install (build) if you compile Mono:
>> >
>> > http://www.mono-project.com/NAnt_Installation
>> >
>> > Hope this helps!
>> >
>> > - Kenny
>> >
>>
>>
>

Reply via email to