Rendered at 13:42:55 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
negative_zero 18 hours ago [-]
Odd. Google Pixel 7 with GrapheneOS here. OsmAnd works perfectly fine for me without disabling any exploit protection options.
BlackRabbit1 17 hours ago [-]
CoMaps behaves very very weirdly on GrapheneOS. Same with OrganicMaps.
Osmand and GMaps are working fine.
Waze is almost melting the poor thing. Beside of that working fine.
grapheneos 3 hours ago [-]
CoMaps and Waze definitely work well on GrapheneOS. There's a known performance issue experienced by some users with the OsmAnd OpenGL renderer which can be worked around disabling hardened_malloc. We could likely provide a performance vs. security toggle for hardened_malloc to avoid it, but we also plan to continue optimizing the default high security mode.
subscribed 16 hours ago [-]
Osmand and OrganicMaps work flawlessly for me. Waze on 6 (not pro), works better than on my 9 Pro.
gunalx 15 hours ago [-]
Have had no noticable problems with organic maps.
methuselah_in 7 hours ago [-]
comaps and organic maps shares some of the same codebase right?
archturtle 1 hours ago [-]
AFAIK CoMaps is a fork of OrganicMaps after OrganicMaps added some sort of ads or sponsoring. They both use OSM
pizzaiolo 16 hours ago [-]
Weirdly how? CoMaps seemingly works fine out of the box on my device
broodbucket 17 hours ago [-]
Waze works perfectly fine for me
DuncanCoffee 17 hours ago [-]
Anyone writing about apps compatibility should specify if it's with or without the play services
DaSHacka 17 hours ago [-]
Can you even run Waze/GMaps without Play services?
Nux 15 hours ago [-]
Waze and Here Maps work well.
worldsavior 17 hours ago [-]
Yes.
DaSHacka 16 minutes ago [-]
Neat, every day I inch closer to not needing Play Services anymore.
Waze is fairly easy to run without play services. GMaps I haven't yet found a way to run, but also haven't looked in quite some time.
grapheneos 3 hours ago [-]
Google Maps used to work without it but recently gained a hard dependency on Play services. We could add more shims to make more apps work without it installed but that hasn't been a focus yet.
ThePowerOfFuet 17 hours ago [-]
I use Comaps daily on GrapheneOS on a Pixel 8 Pro and it works great.
Huh. Yeah, it is noticeably faster on my 9a with that disabled. I wonder what they're doing differently...
grapheneos 3 hours ago [-]
The hardened_malloc configuration in GrapheneOS is the security-focused configuration. OsmAnd ends up acting as a malloc microbenchmark in certain configurations. Users have reported it only happens with the OpenGL rendering mode and it doesn't seem to happen for everyone.
GrapheneOS can provide a performance vs. security toggle for hardened_malloc for these rare cases but it rarely comes up as relevant.
I mean OsmAnd - other mapping apps don't slow down anywhere near this much.
OSM-rendering apps are a fair bit more computationally-expensive than many apps, so I do expect them to show the allocator's cost more, but OsmAnd stands out quite starkly against every other app on my phone.
pjmlp 19 hours ago [-]
Maybe the actual solution is to improve, replace the application.
mohamedkoubaa 19 hours ago [-]
There needs to be a wall of shame for apps that abuse hardware owned by users
yjftsjthsd-h 18 hours ago [-]
How's it abusing anything? It's an Android app that works fine with the default Android memory allocator.
pjmlp 18 hours ago [-]
The AOSP memory allocator is seldom the one used by OEMs.
rpdillon 17 hours ago [-]
Really? They're not using Scudo? The hardened_malloc used in GrapheneOS has a bunch of performance issues that were trade-offs against security. Every other major android distribution uses scudo as far as I know. Which OEMs are you thinking of?
Edit: Did some research after writing this? It appears that Samsung may be still using jemalloc, albeit a newer version than the one from the Android 11 days.
grapheneos 4 hours ago [-]
No, it does not have "a bunch of performance issues". It has carefully considered performance vs. security compromises which are largely configurable. GrapheneOS uses hardened_malloc in a very security-oriented configuration and has the option to disable it per-app if there's ever a compatibility or performance issue. GrapheneOS could also offer another toggle for setting it to a performance mode where it isn't significantly slower than Scudo either via dynamic configuration or a 2nd build of hardened_malloc with a lighter configuration. Most overhead is from slab allocation quarantines which are optional.
perching_aix 18 hours ago [-]
That doesn't necessarily mean it isn't being abusive, just that said allocator tolerates it okay.
izacus 19 hours ago [-]
Or maybe there's a reason why the mainline Android OEMs don't ship that allocator by default.
grapheneos 3 hours ago [-]
The hardened_malloc project has performance vs. security configuration. It's used in a very security-oriented configuration in GrapheneOS. GrapheneOS could offer a performance vs. security toggle for this but hasn't yet included one since there are rarely apps with any noticeable performance difference. Android apps are mostly written in Java/Kotlin where it makes no difference. There are often specific uses of optimized C, C++ or Rust code where it makes little difference. It's rare for an app to be heavily impacted by malloc performance as if it's a malloc microbenchmark, and even in that case the overhead is typically quite reasonable. OsmAnd is doing something very strange in a certain configuration.
Groxx 18 hours ago [-]
The fairly obvious answer here is "OEMs don't care about security because very few people will pay for it, either with $ or time". Benchmaxxing sells better.
izacus 17 hours ago [-]
That's trivially provable as false.
nvme0n1p1 17 hours ago [-]
If so, I'd love to know which OEM you're thinking of who ships an Android distro more secure than GrapheneOS.
izacus 17 hours ago [-]
Let's first start with y'all providing any proof that it was "benchmaxxing" that causes OEMs not to ship hardened allocators (and not - for example - breaking compatibility with users' software).
And then we can move the goalposts to "more secure distro with GrapheneOS" which isn't part of the conversation until you dragged it out.
nvme0n1p1 16 hours ago [-]
If you're expecting some leaked internal document that says "priorities: 1. benchmarks, 2. security", no, that probably doesn't exist. But their priorities are revealed by their actions.
GrapheneOS typically ships security updates within a day. But most of Samsung's phones get quarterly security updates[1]. There will never be a primary source with a Samsung insider saying "we're fine with our customers being vulnerable to widely exploited security bugs for the next 89 days, in order to save our massive corporation a few thousand dollars a month." But their priorities are revealed by their actions.
If the statement "OEMs don't care about security" is trivially proven false, as you said, then you should be able to prove it trivially by naming even just a single OEM whose update cadence matches GrapheneOS's.
Also look at their advertising. Endless "X% faster" mentions that often get significant visual space, but when was the last time you saw "security updates 7 days earlier" or "tagged memory for better safety"? Even a single mention of "security" on a phone's manufacturer page is uncommon, and that's usually just mentioning a normal Android feature, or something like Knox or Secure Folder and not "we made choices that make a common class of attacks much more difficult or impossible".
The numbers aren't zero, certainly. Nor does it imply directly proportional levels of effort. But they are incredibly obviously given wholly different levels of attention on nearly all phones, by nearly all phone manufacturers.
pessimizer 15 hours ago [-]
> Let's first start with y'all providing any proof
Your trivially proving things can't involve asking other people to prove the opposite of things. You've instantly backed down.
> And then we can move the goalposts
Why? You haven't done anything except ask others to do things. You've moved the goalposts from trivially falsifiable, and started begging.
pjmlp 18 hours ago [-]
Because they cut costs on hardware and not all ship MTE enabled ARMs.
palata 17 hours ago [-]
Maybe... legacy?
aucisson_masque 16 hours ago [-]
What is the point of this hardening feature if you got to disable it ?
You can tweak Android as much as you want, the OS was not made to be private nor secure. App developers will never check if it breaks the grapheneos memory allocating feature (amongst others) so by default you disable it.
Anyway it also requires the app to be able to even run on a rom that doesn’t respect play integrity.
grapheneos 4 hours ago [-]
> What is the point of this hardening feature if you got to disable it ?
It doesn't have to be disabled. Most users are saying OsmAnd runs fine for them with the default of hardened_malloc being enabled. There was no need to disable the other hardening features. A subset of users are experiencing slow performance in the OpenGL rendering mode with hardened_malloc enabled. It's likely due to the implementation in the app doing something quite inefficient which hasn't yet been identified. The hardened_malloc configuration in GrapheneOS is heavily oriented to security and has more overhead than the lite configuration. We could offer a performance vs. security mode for it but it usually makes no major difference and has a toggle for any case it does.
progval 16 hours ago [-]
It's meant to protect apps against their own bugs. It's an improvement to be enabled by default and disabled for the few apps where it's an issue.
epihelix 15 hours ago [-]
> Anyway it also requires the app to be able to even run on a rom that doesn’t respect play integrity.
?? GrapheneOS does respect horrid play integrity (it provides basic integrity only).
Not that this has any bearing on how an app runs performance-wise.
aucisson_masque 6 hours ago [-]
Before looking at how an app run “performance wise”, you got to be able to run it. That’s my point.
Basic play integrity doesn’t mean much, more and more applications are requiring full play service integrity.
grapheneos 4 hours ago [-]
Only a tiny subset of apps require Play Integrity levels and a growing number of those are explicitly permitting GrapheneOS.
hadi77ir 17 hours ago [-]
I wonder if a website using leaflet.js has better or worse performance in the said case. If it does better, then maybe the problem is on OsmAnd's side?
speedstyle 4 hours ago [-]
Leaflet is (generally) for streaming image tiles, OsmAnd renders a set of geographical features itself. But yes, it could do so more efficiently
RKearney 17 hours ago [-]
"Before installing, please turn off all anti-virus and firewall software."
grapheneos 4 hours ago [-]
The feature protects the app from exploits and doesn't provide any additional security for the OS from the app. It's worth noting most users are having no issues running OsmAnd with hardened_malloc.
perching_aix 19 hours ago [-]
If you have two apps, both maps...
> The reason behind it is the hardened memory allocator, which seems to create a significant overhead for Osmand. That might be because scrolling a map requires constant loading and discarding of data.
... is this really the right hunch, over e.g. the OpenStreetMaps app lacking in discipline with its heap allocations?
himata4113 19 hours ago [-]
Seems unlikely, it's java so this is likely related to loading large amounts of objects and having the GC thrashing.
someonebaggy 16 hours ago [-]
C++ memory allocator choice probably wouldn't affect Java code, which has its own heap algorithms.
cnrcode 15 hours ago [-]
OsmAnd's map engine is mostly native C++. The hardened allocator wraps malloc for that native heap, where decoded tile geometry and texture buffers live during scroll. The Java side still uses ART's GC, so you get a split: the UI can feel fine while the native render path pays the hardened-allocator tax on every tile churn. That also matches why a Leaflet WebView (one heap model) can feel different from the same map data inside OsmAnd.
grapheneos 4 hours ago [-]
The hardened allocator doesn't wrap malloc but rather is the default malloc implementation on GrapheneOS with a per-app opt-out toggle. It makes no substantial difference for overall OS performance but there are definitely apps where it matters. OsmAnd works fine for most users without disabling it though.
Osmand and GMaps are working fine.
Waze is almost melting the poor thing. Beside of that working fine.
https://plexus.techlore.tech/apps?q=waze
Waze is fairly easy to run without play services. GMaps I haven't yet found a way to run, but also haven't looked in quite some time.
GrapheneOS can provide a performance vs. security toggle for hardened_malloc for these rare cases but it rarely comes up as relevant.
OSM-rendering apps are a fair bit more computationally-expensive than many apps, so I do expect them to show the allocator's cost more, but OsmAnd stands out quite starkly against every other app on my phone.
Edit: Did some research after writing this? It appears that Samsung may be still using jemalloc, albeit a newer version than the one from the Android 11 days.
And then we can move the goalposts to "more secure distro with GrapheneOS" which isn't part of the conversation until you dragged it out.
GrapheneOS typically ships security updates within a day. But most of Samsung's phones get quarterly security updates[1]. There will never be a primary source with a Samsung insider saying "we're fine with our customers being vulnerable to widely exploited security bugs for the next 89 days, in order to save our massive corporation a few thousand dollars a month." But their priorities are revealed by their actions.
If the statement "OEMs don't care about security" is trivially proven false, as you said, then you should be able to prove it trivially by naming even just a single OEM whose update cadence matches GrapheneOS's.
[1]: https://security.samsungmobile.com/workScope.smsb
The numbers aren't zero, certainly. Nor does it imply directly proportional levels of effort. But they are incredibly obviously given wholly different levels of attention on nearly all phones, by nearly all phone manufacturers.
Your trivially proving things can't involve asking other people to prove the opposite of things. You've instantly backed down.
> And then we can move the goalposts
Why? You haven't done anything except ask others to do things. You've moved the goalposts from trivially falsifiable, and started begging.
You can tweak Android as much as you want, the OS was not made to be private nor secure. App developers will never check if it breaks the grapheneos memory allocating feature (amongst others) so by default you disable it.
Anyway it also requires the app to be able to even run on a rom that doesn’t respect play integrity.
It doesn't have to be disabled. Most users are saying OsmAnd runs fine for them with the default of hardened_malloc being enabled. There was no need to disable the other hardening features. A subset of users are experiencing slow performance in the OpenGL rendering mode with hardened_malloc enabled. It's likely due to the implementation in the app doing something quite inefficient which hasn't yet been identified. The hardened_malloc configuration in GrapheneOS is heavily oriented to security and has more overhead than the lite configuration. We could offer a performance vs. security mode for it but it usually makes no major difference and has a toggle for any case it does.
?? GrapheneOS does respect horrid play integrity (it provides basic integrity only).
Not that this has any bearing on how an app runs performance-wise.
Basic play integrity doesn’t mean much, more and more applications are requiring full play service integrity.
> The reason behind it is the hardened memory allocator, which seems to create a significant overhead for Osmand. That might be because scrolling a map requires constant loading and discarding of data.
... is this really the right hunch, over e.g. the OpenStreetMaps app lacking in discipline with its heap allocations?