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

Ivan Maidanski ivmai at mail.ru
Thu Jan 20 12:54:42 PST 2011


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