Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 09 Sep 2016 14:06:21 +0300
From:      Arto Pekkanen <isoa@kapsi.fi>
To:        clutton <clutton@zoho.com>
Cc:        freebsd-chromium <freebsd-chromium@freebsd.org>
Subject:   Re: 52.0.2743.82 (64-bit) to go, Aw snap is still there
Message-ID:  <732bbbfa1ca6903e0f76e4f98a955a28@kapsi.fi>
In-Reply-To: <1472985750.17294.22.camel@zoho.com>
References:  <1471486169.7533.8.camel@zoho.com> <1472667320.8146.46.camel@zoho.com> <1d42dcb1faf8cbe4fbf24066a4163134@kapsi.fi> <1472985750.17294.22.camel@zoho.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Cool! Thanks for the info. Now I know where we're going with the 
project.

I suppose we will see later how the collaboration with upstream goes. 
Awesome work with GN/ninja btw, that will help a lot in the future!

clutton kirjoitti 04.09.2016 13:42:
> On Sun, 2016-09-04 at 02:30 +0300, Arto Pekkanen wrote:
>> So I was right from the very start: the Chromium codebase assumes 
>> certain behaviour from the memory allocation API of the host system,
>> and 
>> if this behavour is not in line with Linux (and Android), then
>> problems 
>> are to be expected. Yeah. Yet another fine example of how Open Source
>> is 
>> becoming synonymous with "Designed for Linux".
>> 
>> Is there any hope to get these changes propagated upstream to
>> Chromium 
>> developers?
>> 
>> It would be really nice to have upstream collaboration, because if
>> the 
>> upstream yet again changes things ever so slightly, things will 
>> mysteriously break.
> 
> No, you wasn't right about the memory. I just wrote - base allocator
> works fine. Their home-brew assembler snippets work fine. I haven't
> checked blink allocator as thoroughly as base, may be it's there
> something not right. Do not assume that chromium is bug-free also.
> Some shit may fire with conditions met.
> 
> For now I have GN ninja fully working (I believe I'll commit today), I
> doubt that google would take it upstream, such a mess to add another
> architecture. Nevertheless - I'm using macros is_bsd, with assumption
> that code would use OS_BSD, and with some division
> OS_OPENBSD/OS_FREEBSD further in C/C++ code, so it's more clean and has
> more chances to be accepted. But may no mistake - they invest a lot of
> resources to make this chrome work according to a plan, I don't think
> that they would add another OS. Unless there are a lot of people
> interested.
> 
> About Linuxism, - they divide code very simple, if you don't like the
> functionality, you can rewrite it for your OS... The thing is - we use
> a lot of code written for Linux.
> 
> 
>> clutton kirjoitti 31.08.2016 21:15:
>> >
>> > On Thu, 2016-08-18 at 05:09 +0300, clutton wrote:
>> > >
>> > > I've just fixed the Aw, snap. I believe so.
>> > Ok, time to admit the defeat. I haven't fixed the issue in time,
>> > and I
>> > planned to do so till the summer is there. Being to much arrogant I
>> > started just before the end of time. I still can't believe I
>> > haven't
>> > fixed this in time.
>> >
>> > I'll work on this, but not so intensively, now I just can't left
>> > it.
>> > I learned about the codebase so much. And all those small
>> > improvements
>> > shouldn't be wasted anyway (I haven't posted any because they worth
>> > nothing without fixing the bug). I'll do it more slowly and
>> > considerably now.
>> >
>> > Number 1 issue is to bring new gn ninja generation system, every
>> > documentation assumes that you use gn, in future they will remove
>> > gyp
>> > generator. It would be much easier to work then.
>> > Number 2 is probably to clean the mess in our pathes.
>> >
>> > Some thoughts for maintainers/developers:
>> >
>> > Don't try debugging if you don't have enough RAM, I distributed the
>> > compilation to distcc, but RAM was an issue, even with another ssd
>> > attached as a swap it was tooooo slow to work with debugger, I did
>> > a
>> > lot of tricks to make it possible though, And have a lot of
>> > frustrations when those tricks mangle the code. I wish I could just
>> > put
>> > that monster in RAM press bt and don't wait 5 minutes till it's
>> > done.
>> >
>> > Memory allocation in base works fine, I might missed something but
>> > debugging bit after bit was fine, then I finally did stubs, then I
>> > finally found that new shim allocator have those stubs already,
>> > some
>> > fixes would be needed though, for now I used this:
>> > allocator_shim_default_dispatch_to_libc.cc
>> > extern "C" {
>> > void* __malloc(size_t size);
>> > void* __calloc(size_t n, size_t size);
>> > void* __realloc(void* address, size_t size);
>> > void* __memalign(size_t alignment, size_t size) {
>> >   void *ret;
>> >   if (__posix_memalign(&ret, alignment, size) != 0) {
>> >     return nullptr;
>> >   } else {
>> >     return ret;
>> >   }
>> > }
>> > int  __posix_memalign(void **ptr, size_t alignment, size_t size);
>> > void __free(void* ptr);
>> > }  // extern "C"
>> >
>> > But they assume linux and android, and they implement
>> > posix_memalign
>> > through memalign, I did the opposite. For now I have that
>> > unnecessary
>> > chain. It works but it could work faster without chain.
>> >
>> > I haven't debugged heavily blink memory allocator, which I should
>> > have
>> > done instead of base allocator... There are some approaches to make
>> > it
>> > not to crush, but they are just hardcode patching, not fixing. And
>> > some
>> > patches I thought work just delaying the freezing.
>> >
>> > Next, chromium team patch libraries, those in third_party
>> > directory, I
>> > debugged some of them, seems fine. No difference in work comparing
>> > to
>> > our. But that is probably is something to look at more. Ninja
>> > sucks,
>> > once I put the most recent re2 library by mistake and ninja
>> > compiled it
>> > without hesitation. Then I had coredumps on that library.
>> >
>> >
>> > Ok, probably all, because writing everything would be to much for
>> > non
>> > prepared reader. Better send patches. "Talk is cheap. Show me the
>> > code"

-- 
Arto Pekkanen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?732bbbfa1ca6903e0f76e4f98a955a28>