Re[14]: [Gc] Boehm GC and Iphone

Ivan Maidanski ivmai at mail.ru
Thu Jan 20 13:27:06 PST 2011


Hello,

Send the C/C++ code  as an attachment. And specify the building options (or link the makefile as an attachment).

Regards.

Thu, 20 Jan 2011 18:23:45 -0300 Damian Troncoso <damian.pop at gmail.com>:

> Sure I'll do. I can make an xcode project. Where should I upload it?
> 
> El 20/01/2011, a las 17:54, Ivan Maidanski <ivmai at mail.ru> escribi?:
> 
> > Hi,
> >
> > Would be nice if you provide a test case (as small as possible).
> >
> > Meanwhile, I'll run my app eating/recycling lots of memory on iphone with
> enable incremental.
> >
> > Regards.
> >
> > Wed, 19 Jan 2011 20:34:43 -0300 Damian <damian.pop at gmail.com>:
> >
> >> I tried 3, 5 and 6 and nothing changed.
> >> Yes, I'm getting the abort on the first call to exc_server, and
> >> catch_exception_raise
> >> is never called.
> >>
> >> 2011/1/19 Ivan Maidanski <ivmai at mail.ru>
> >>
> >>> Hi,
> >>>
> >>> 1. Are you getting abort on the first exc_server call?
> >>> 2. Is catch_exception_raise called?
> >>> 3. Try BROKEN_EXCEPTION_HANDLING
> >>> 4. msgh_reserved is not set to any value, that's why it is random.
> >>> 5. For ID_STOP, ID_RESUME, it might be not safe to use 1, 2 - try other
> >>> values.
> >>> 6. Try to increase reply/msg.data size in GC_mprotect_thread.
> >>>
> >>> Regards.
> >>>
> >>> Wed, 19 Jan 2011 00:23:26 -0300 Damian <damian.pop at gmail.com>:
> >>>
> >>>> Well I managed to debug the code.
> >>>> I really don't get why the exception is produced, I don't even know if
> >>> the data passed to exc_server looks good or not.
> >>>> It's always like the following when the exception is thrown, the only
> >>> value that changes is 'msgh_reserved':
> >>>
> >>>> (gdb) p msg.head</div>
> >>>> $1 = {
> >>>> msgh_bits = 2147488018,
> >>>> msgh_size = 76,
> >>>> msgh_remote_port = 6147,
> >>>> msgh_local_port = 4611,
> >>>> msgh_reserved = 3445996780,
> >>>> msgh_id = 2401
> >>>> }
> >>>
> >>>> The call to exc_server is like this:
> >>>
> >>>>
> >>>> if(!exc_server(&msg.head, &reply.head))
> >>>> ABORT("exc_server failed");
> >>>
> >>>> msg.head is filled with a call to mach_msg, like this:
> >>>
> >>>>
> >>>> r = mach_msg(&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE |
> >>>> (GC_mprotect_state == GC_MP_DISCARDING ? MACH_RCV_TIMEOUT : 0),
> >>>> 0, sizeof(msg), GC_ports.exception,
> >>>> GC_mprotect_state == GC_MP_DISCARDING ? 0
> >>>> : MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
> >>>
> >>>> I'm lost :(
> >>>> 2011/1/18 Ivan Maidanski <ivmai at mail.ru>
> >>>> Hi,
> >>>>
> >>>> Tue, 18 Jan 2011 03:24:33 -0300 Damian <damian.pop at gmail.com>:
> >>>>
> >>>
> >>>>> Hi Ivan, thanks for helping me with this.
> >>>>> 1. I defined none of those, should I define any? (I tried both after I
> >>> read
> >>>>> this but I get the same exception)
> >>>>
> >>>> So, the problem is not there.
> >>>>
> >>>
> >>>>> 2. My app only runs on iphone, but I tried it in the iphone simulator
> >>> and it
> >>>>> does not crash. I built the gc just like for the simulator but for x86
> >>>>
> >>>>> arch and it seems to work.
> >>>>
> >>>>> 3. How? How do I build the collector with symbols on? I tried adding -g
> >>> to
> >>>>> compiler options and I get a library more than twice bigger so I thing
> >>> it
> >>>>> has the symbols, but when debugging the stack is the same.
> >>>>
> >>>> I don't know. At least, try to set a break point at exc_sever and watch
> >>> what is passed to it.
> >>>>
> >>>> Regards.
> >>>>
> >>>
> >>>>>
> >>>>> Thanks again!
> >>>>> Damian
> >>>>>
> >>>>> 2011/1/17 Ivan Maidanski <ivmai at mail.ru>
> >>>>>
> >>>>>> Hi Damian,
> >>>>>>
> >>>>>> 1. Is the mode is GC_DISCOVER_TASK_THREADS or
> >>> GC_NO_THREADS_DISCOVERY?
> >>>>>> 2. Could you try your app on Mac OS X?
> >>>>>> 3. Could you debug with symbols on and tell us the reason of abort
> >>> call?
> >>>>>> 4. GC_get_parallel() returns non-zero if 2 or more markers are
> >>> running.
> >>>>>> 5. Incremental/generation mode is turned on only if either
> >>>>>> GC_enable_incremental() is called (unless GC_DISABLE_INCREMENTAL env
> >>> var is
> >>>>>> set) or GC_ENABLE_INCREMENTAL env var is set.
> >>>>>>
> >>>>>> Regards.
> >>>>>>
> >>>>>> Sun, 16 Jan 2011 01:18:05 -0300 Damian <damian.pop at gmail.com>:
> >>>>>>
> >>>>>>> Well, I was not calling gc_enable_incremental() so I think it was
> >>> not
> >>>>>>> enabled.
> >>>>>>> Now I added the call but the program execution is aborted with this
> >>> stack
> >>>>>>> trace:
> >>>>>>>
> >>>>>>> #0 0x31cbcffc in __abort ()
> >>>>>>>
> >>>>>>> #1 0x31cbd04c in abort ()
> >>>>>>>
> >>>>>>> #2 0x31c91fcc in internal_catch_exception_raise ()
> >>>>>>>
> >>>>>>> #3 0x31c81ea4 in _Xexception_raise ()
> >>>>>>>
> >>>>>>> #4 0x31c81ab0 in exc_server ()
> >>>>>>>
> >>>>>>> #5 0x00060f20 in GC_mprotect_thread ()
> >>>>>>>
> >>>>>>> #6 0x31caa284 in _pthread_start ()
> >>>>>>>
> >>>>>>> #7 0x31c9f2b0 in thread_start ()
> >>>>>>>
> >>>>>>>
> >>>>>>> Any help?
> >>>>>>> Thanks!
> >>>>>>>
> >>>>>>>
> >>>>>>> On Sat, Jan 15, 2011 at 8:14 PM, Damian <damian.pop at gmail.com>
> >>> wrote:
> >>>>>>>
> >>>>>>>> Hi, I've just built gc7.2 BDWGC for iphone device, and it's
> >>> working.
> >>>>>>>> How can I make sure that generation mode is on and working?
> >>>>>>>> And, parallel mark doesn't work on single core cpus?
> >>>>>>>>
> >>>>>>>> Damian.
> >>>>>>>>
> >>>>>>>> 2011/1/13 Ivan Maidanski <ivmai at mail.ru>
> >>>>>>>>
> >>>>>>>>> Hi,
> >>>>>>>>>
> >>>>>>>>> If the platform is not multi-core then parallel-mark mode should
> >>> be
> >>>>>> off
> >>>>>>>>> (either at compile time or at runtime).
> >>>>>>>>> But turning on generation mode could reduce the GC pause on a
> >>>>>> single-core.
> >>>>>>>>>
> >>>>>>>>> Regards.
> >>>>>>>>>
> >>>>>>>>> Thu, 13 Jan 2011 08:28:55 -0300 Damian <damian.pop at gmail.com>:
> >>>>>>>>>> None is multicore. Will I get an inprovement anyway?
> >>>>>>>>>> Ok, I will try to compile gc7.2 BDWGC snapshot tonight.
> >>>>>>>>>> Thanks!
> >>>>>>>>>>
> >>>>>>>>>> 2011/1/13 Ivan Maidanski <ivmai at mail.ru>
> >>>>>>>>>>
> >>>>>>>>>>> Hi,
> >>>>>>>>>>>
> >>>>>>>>>>> 1. Are you going to run it on a multi-core? (I don't know
> >>> Apples
> >>>>>>>>> devices
> >>>>>>>>>>> internals deeply, so I wonder which of them have multi-core
> >>> CPUs).
> >>>>>>>>>>>
> >>>>>>>>>>> 2. If you start using gc6.8 just because of the reason you
> >>>>>> mentioned,
> >>>>>>>>> I
> >>>>>>>>>>> recommend you to migrate to gc7.2 (get the recent BDWGC
> >>> snapshot
> >>>>>> which
> >>>>>>>>> now
> >>>>>>>>>>> has generation plus parallel collection enabled).
> >>>>>>>>>>>
> >>>>>>>>>>> 3. Incremental/generation collection as well as parallel
> >>> marking
> >>>>>> are
> >>>>>>>>> the GC
> >>>>>>>>>>> improvements aiming collection pause reduction.
> >>>>>>>>>>>
> >>>>>>>>>>> Regards.
> >>>>>>>>>>>
> >>>>>>>>>>> Wed, 12 Jan 2011 20:03:02 -0300 Damian <
> >>> damian.pop at gmail.com>:
> >>>>>>>>>>>
> >>>>>>>>>>>> Maybe concurrent + parallel collection does not what I'm
> >>>>>> expecting.
> >>>>>>>>>>>> What I need to achieve is to reduce the collection pause.
> >>>>>>>>>>>> I'm using version 6.8 (because I've found somewhere on the
> >>>>>> internet
> >>>>>>>>>>> someone
> >>>>>>>>>>>> has made it work on iphone with some changes) and I'm
> >>> having
> >>>>>>>>> collection
> >>>>>>>>>>>> cycles of about 120ms. I need to reduce that number. I
> >>> don't
> >>>>>> care if
> >>>>>>>>>>> overall
> >>>>>>>>>>>> collection time increases as long as the app is not
> >>> freezed for
> >>>>>> such
> >>>>>>>>> a
> >>>>>>>>>>> long
> >>>>>>>>>>>> time.
> >>>>>>>>>>>> Is that possible?
> >>>>>>>>>>>>
> >>>>>>>>>>>> Thanks.
> >>>>>>>>>>>>
> >>>>>>>>>>>> 2011/1/12 Ivan Maidanski <ivmai at mail.ru>
> >>>>>>>>>>>>
> >>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> BTW What Apple devices has a multi-core CPU at present?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I ran GC test on a single-core with GC_MARKERS=4 -
> >>> collector
> >>>>>>>>> appears to
> >>>>>>>>>>>>> work...
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Wed, 12 Jan 2011 10:04:00 -0300 Damian <
> >>> damian.pop at gmail.com
> >>>>>>> :
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>> Is it possible to compile boehm gc for iphone enabling
> >>>>>>>>> generational
> >>>>>>>>>>> and
> >>>>>>>>>>>>> parallel collection?
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> See the recent post by Hans.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I try to enable generational collection on multi-cores
> >>>>>> (regardless
> >>>>>>>>>>> whether
> >>>>>>>>>>>>> this slows down the GC in average or not - anyway it is
> >>> not on
> >>>>>> by
> >>>>>>>>>>> default).
> >>>>>>>>>>>>> FYI: At present, generational collection on multi-cores
> >>>>>> enabled
> >>>>>>>>> only on
> >>>>>>>>>>>>> Win32.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Regards.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> I will try to do so; probably I will need help, but
> >>> for now
> >>>>>> al
> >>>>>>>>> least
> >>>>>>>>>>> I
> >>>>>>>>>>>>> want to know it it's possible at all.
> >>>>>>>>>>>>>> Thanks
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>>> _______________________________________________
> >>>>> Gc mailing list
> >>>>> Gc at linux.hpl.hp.com
> >>>>> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Gc mailing list
> >>>> Gc at linux.hpl.hp.com
> >>>> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> >>>>
> >>>
> >>>
> >>
> >> _______________________________________________
> >> Gc mailing list
> >> Gc at linux.hpl.hp.com
> >> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
> >



More information about the Gc mailing list