On 05/21/2010 02:06 AM, Lex Trotman wrote:


On 21 May 2010 02:49, Andrei Vishneuski <[email protected] <mailto:[email protected]>> wrote:


    On 20 mei 2010, at 12:48, Lex Trotman wrote:



    On 20 May 2010 20:20, Andrei Vishneuski <[email protected]
    <mailto:[email protected]>> wrote:


        On 20 mei 2010, at 11:42, Lex Trotman wrote:



        On 20 May 2010 19:28, Andrei Vishneuski
        <[email protected] <mailto:[email protected]>> wrote:


            On 19 mei 2010, at 22:34, Enrico Tröger wrote:

            > On Tue, 18 May 2010 21:40:03 +0200, Andrei wrote:
            >
            >> On 05/18/2010 01:31 PM, Andrei Vishneuski wrote:
            >>>
            >>>
            >>> On 18 mei 2010, at 13:22, Lex Trotman wrote:
            >>>
            >>>>
            >>>>
            >>>> On 18 May 2010 20:37, Andrei Vishneuski
            <[email protected] <mailto:[email protected]>
            >>>> <mailto:[email protected]
            <mailto:[email protected]>>> wrote:
            >>>>
            >>>>    I am big fun of Geany and have used it in
            Windows and Linux as
            >>>> my primary development editor.
            >>>>    The problem is usage of Geany under Mac OSx.
            >>>>    Basically under Mac osx you have three options:
            >>>>
            >>>>    1) Install port and install geany through the
            port. This is the
            >>>>    most simple way. Geany looks a little bit ugly
            but workable
            >>>> and fast. 2) Deploy native Mac OSx GTK (see
            gtk-osx). More
            >>>> complicated way to use Geany. Geany looks more
            integrated with Mac
            >>>> OSx, but it is SLOW !
            >>>>    3) Use virtual (Linux) machine. Not a graceful
            way but better
            >>>>    than nothing.
            >>>>
            >>>>    I have tried all three options. And
            unfortunately only third
            >>>>    option is applicable.
            >>>>
            >>>>    Options 1) and  2) has critical bug. If you try
            to build
            >>>>    something geany starts consuming 100% CPU time !
            >>>>    It seems there is something wrong with process
            output reading,
            >>>>    geany cannot correctly finalize it and stuck
            somewhere in
            >>>> reading loop.
            >>>>
            >>>>    Does anybody have the same experience and may be
            just by chance
            >>>>    has found a workaround ?
            >>>>
            >>>>
            >>>>
            >>>> Which versions of Geany and Glib and GTK?
            >>>>
            >>> Geany 0.18.1
            >>> 1) Mac OSx port GTK2 2.18.2
            >>> 2) native gtk-osx GTK2 don't know exact version they
            are supporting
            >>> (have to see my home PC to give you more information)
            >>
            >> I little bit more about gtk-osx version: geany 0.18.1
            (built on May
            >> 18 2010 with GTK 2.18.2, GLib 2.22.2)
            >> Geany and gtk-osx has been compiled as i386
            applications since 64bits
            >> version of gtk-osx is no stable yet.
            >>
            >> PS: frankly speaking I think it is not GTK related
            bug, since I have
            >
            > It doesn't need to be a GTK/GLib bug but maybe we just
            use it wrong or
            > it behaves differently on MacOSX or MacOSX behaves
            differently than
            > Linux/Unix. I can't say what's wrong and I don't have
            access to a
            > MacOSX system :(.


            Could you give me a brief use case how the build feature
            works (several general steps) and point the file
            where I can find code responsible for it. May be I will
            try to take a look at the
            problem closer (cannot guarantee since I have not used
            C/C++ for ages :)). As far as I can see practically
            everything works:
            it executes appropriate tool for compilation, gets
            output from the tool,  parses output and makes parsed
            results visible in compile
            window. But after that geany CPU load is 100%.


        Oh, the load remains 100% forever after???  Do you get a
        success message in the status bar?

        Can you try the nightly build version but configure the
        "build" to run a shell script that just does a delay so you
        can check if the load starts before the end of the build or
        after completion.



            I have tried geany night build and geany 0.17. They have
            the same problem.


        Ok, thanks, 0.17 lets out new build bits I added :-) but
        we've still got to fix the problem :-(


            PS: Buy the way, several days ago VirtualBox 3.2 has
            been released. One of the very interested
            feature is support for Mac OSx. That means it is
            possible to install original Mac OSx from
            original oficial DVD. It could be a good way to test
            geany for this platform.


        If one has a DVD, doesn't a Mac come from a place with
        golden arches?? Thats how much I know about them I'm afraid.

        The problem with Mac OSx is mac hardware uses more modern PC
        (EFI instead of BIOS) architecture and of course it is impossible
        just to take official Mac OSx DVD and install it on any PC
        even if the hardware has identical CPU/GPU/etc. And reverse:
        it is
        impossible to install Linux/Windows on mac hardware as is,
        without special boot loaders that emulates BIOS existence.

        There are several  unofficial projects that modify (hack)
        original DVD (most of them add special boot loader which
        makes Mac OSx feels like
        it starts on PC with EFI).  What Virtual Box does it has
        started supporting the modern PC architecture and as result
        you can take original  Mac OSx
        (as far as I know it possible to buy Snow Leopard legally in
        apple store) and install it as virtual machine. Of course,
        there are still several
        problems, your hardware  (CPU/GPU/etc) should be compatible
        with what Mac OSx can support.


    AFAIK none of the Geany developers uses Macs so there is no
    reason for anyone to spend money do it.

    But if you can help we are happy to provide all the guidance we
    can if you can contribute by looking at the problem.

    If you get a chance to look at when the 100% starts would be good.

    As I said in a post a couple back to Enrico (I see I didn't
    clearly indicate I was talking to him, oops sorry) if the problem
    can't be definitely found, another option is to try the way
    builds are run on Windows, where they are synchronous and
    different methods are used to interface to the subprocess.  So
    all is not lost yet.

    To answer your question about where to look, all is in build.c,
    you will see that there are #ifdefs that separate the windows and
    unix code, look at the section headed "execute commands and
    handle results" and the whole process starts at
    build_spawn_command().  If you can use a debugger to find what
    loop its stuck in maybe we can narrow it down.  I would assume
    its in the GTK event/monitor loop,  otherwise the application
    wouldn't continue to work, possibly the monitor of the subprocess
    pipe isn't terminating right and GTK keeps calling it with no
    characters??

    Cheers
    Lex


    The only thing I can say right now is "build_iofunc()" executed
    infinitely, the function always returns TRUE (that is the reason
    why it is never terminated, I think).
    Will see why ii is always true ...


Ok, thats where I thought it would be, I'm not sure why, maybe its GTK2.18 or OSX pipes but whatever, can you try the attached patch that tries to pick up more conditions to stop.

Debugging indicated that the section below starts getting condition = G_IO_IN forever, but "g_io_channel_read_line" can read nothing. I have tried to use additional reading method like read_char, read_to_the_end. I have tried to flush pipe. None of it helped.
The result workaround I have used shown below:

if (cond&  (G_IO_IN | G_IO_PRI))
        {
                gchar *msg;
+               int count = 0;

                while (g_io_channel_read_line(ioc,&msg, NULL, NULL, NULL)&&  
msg)
                {
                        gint color = (GPOINTER_TO_INT(data)) ? COLOR_DARK_RED : 
COLOR_BLACK;

                        process_build_output_line(msg, color);
                        g_free(msg);
+                       count++
                }

+               if (count == 0) return FALSE;
        }


It works, but doesn't give an answer why pipe says "there is still something to read in the pipe".



_______________________________________________
Geany mailing list
[email protected]
http://lists.uvena.de/cgi-bin/mailman/listinfo/geany

Reply via email to