[Mono-list] Fwd: ilasm2 can't compile vbbyref marshalled parameter
Sebastien Pouliot
sebastien.pouliot at gmail.com
Sat Dec 15 10:42:30 EST 2007
Hello Joe,
On Fri, 2007-12-14 at 22:57 -0500, Joe Mason wrote:
> On 12/14/07, Sebastien Pouliot <sebastien.pouliot at gmail.com> wrote:
> > Hello Joe,
> >
> > On Fri, 2007-12-14 at 00:48 -0500, Joe Mason wrote:
> > > I'm trying to make some small edits to a closed-source VB app to get
> > > it running on Linux (the System.Drawing.Image.FromFile "OutOfMemory"
> > > problem) by disassembling it with monodis and reassembling it with
> > > ilasm2.
> >
> > Has the problem been filled in bugzilla.ximian.com ? because AFAIK
> > there's none in FromFile, unless the file is bad.
>
> As far as I could tell from Googling, the problem is with the .NET
> design, rather than mono itself - at least, lots of people are
> reporting it for .NET apps they're writing themselves, often in VB,
> and I assume most of these use Microsoft's .NET.
>
> The problem is that FromFile throws OutOfMemory on any error condition
> (permissions problems, bad image format, etc). See the following two
> posts - the first advises people to use OpenRead and FromStream, and
> the second has a huge list of people saying, "I got the same
> exception, but my problem was something different!"
>
> http://dotnetjunkies.com/Forums/ShowPost.aspx?PostID=3344
> http://jcapka.blogspot.com/2006/06/imagefromfile-gives-out-of-memory.html
>
> I had assumed that Mono's FromFile was just following the Microsoft
> behaviour for compatibility, even though it would be better to have it
> throw a wider range of errors.
>
> I can't really file a bug until I'm sure why this particular code
> causes the exception, though, otherwise I don't have a very repeatable
> bug report.
Ok, I understand now. It's true that GDI+, and libgdiplus in our case,
returns OutOfMemory for a lot of things that aren't memory related. In
fact it seems many NULL checks return OutOfMemory :(
> > FromStream can have some issues on Win32 (only) since the way MS deals
> > with loading requires the stream to be alive as long as the image.
>
> Thanks, good to know.
>
> (snip errors when pinvoking GetVolumeInformationA)
>
> > Have a look at pinvoke.net
>
> Uh, it just occured to me - will pinvoking this even WORK on Linux,
> even if I get it to compile?
No, it will work with Mono on Windows but not on Linux.
> I do have Wine installed, so I have a
> version of this function somewhere, but getting Mono to find it sounds
> like a huge hassle.
As of today Mono doesn't run under Wine.
> Surely .NET has its own equivalent that could be
> called natively?
There are some similar API in the FX. Not all of them are currently
supported by Mono, but someone is working on some of them (check
mono-list and mono-devel mailing list archives).
> Thanks for the help,
> Joe
Good luck!
Sebastien
More information about the Mono-list
mailing list