Infeasible
Status Update
Comments
le...@gmail.com <le...@gmail.com> #2
Err, I have no idea how gerrit changesets are reflected in the bug report, but there is a preliminary patch https://android-review.googlesource.com/#/c/159020/
le...@gmail.com <le...@gmail.com> #3
Scope of changes to bionic are somewhat more complex than initially thought.
The troublesome spots are mmap() and friends, malloc() and friends (due to symbol clash between struct, fieldname, and function names) as well as most of the routines in string.h
string.h exposes some issues, because the routines in it are both defined as inline functions that call out to assembly counterpart of the same name using an inconsistent __builtin_XXXX() convention. Sometimes the routines are available as _builtin___XXXX_chk and sometimes as __builtin_xxx.
I initially thought about limiting the macro magic purely for bionic/arm64, but there does not seem to be a nice way to do this.
Does this mean I need to touch all the .S files that are associated with string.h?
Even for the ones that are NOT for arm64?
Please take a look at:
https://code.google.com/p/android/issues/detail?id=180578
The troublesome spots are mmap() and friends, malloc() and friends (due to symbol clash between struct, fieldname, and function names) as well as most of the routines in string.h
string.h exposes some issues, because the routines in it are both defined as inline functions that call out to assembly counterpart of the same name using an inconsistent __builtin_XXXX() convention. Sometimes the routines are available as _builtin___XXXX_chk and sometimes as __builtin_xxx.
I initially thought about limiting the macro magic purely for bionic/arm64, but there does not seem to be a nice way to do this.
Does this mean I need to touch all the .S files that are associated with string.h?
Even for the ones that are NOT for arm64?
Please take a look at:
to...@google.com <to...@google.com> #4
Could you please reiterate why is it not possible to fix this in TSan? If the problem is some call happening before __tsan_init, we just need to call __tsan_init right there. Most (if not all) interceptors have this logic.
Does it still happen if __tsan_init is called from .preinit_array?
Does it still happen if __tsan_init is called from .preinit_array?
le...@gmail.com <le...@gmail.com> #5
Its troublesome before __tsan_init because we lack __thread keyword support in bionic. I had to hack in a workaround in TSAN that does not use intercepted calls. (more on this below)
The majority of the problem actually occurs after __tsan_init has been called.
For example, pthread_create() calls a bunch of routines for the *new thread*, before it has had a chance to initialize its ThreadState. All of these routines running on the new thread are intercepted by tsan, and crashes because ThreadState has not been initialized yet.
A purely tsan-only fix is to "globally ignore" interceptors during troublesome times. This works fine for two threads, but doesn't scale to multiple threads - now you can miss events because they are being ignored.
I also tried putting in "global partial ignores" (i.e. ignore interceptors only on the new thread), but that got really hairy as well.
The fundamental problem is that TSAN is intercepting calls that it has no business intercepting.
For example, the same thing happens during thread join time, when one thread is being deconstructed.
Similar things happen during process exit time where ALL threads are being deconstructed.
Playing around with purely TSAN solution, all I managed to do was move around the actual place of the crash/hang/missed events.
The majority of the problem actually occurs after __tsan_init has been called.
For example, pthread_create() calls a bunch of routines for the *new thread*, before it has had a chance to initialize its ThreadState. All of these routines running on the new thread are intercepted by tsan, and crashes because ThreadState has not been initialized yet.
A purely tsan-only fix is to "globally ignore" interceptors during troublesome times. This works fine for two threads, but doesn't scale to multiple threads - now you can miss events because they are being ignored.
I also tried putting in "global partial ignores" (i.e. ignore interceptors only on the new thread), but that got really hairy as well.
The fundamental problem is that TSAN is intercepting calls that it has no business intercepting.
For example, the same thing happens during thread join time, when one thread is being deconstructed.
Similar things happen during process exit time where ALL threads are being deconstructed.
Playing around with purely TSAN solution, all I managed to do was move around the actual place of the crash/hang/missed events.
zh...@gmail.com <zh...@gmail.com> #6
On x86_64/linux, precisely zero calls are intercepted during pthread_create() on the new thread until it has finished initializing its ThreadState.
That does not happen on aarch64/bionic
That does not happen on aarch64/bionic
ja...@gmail.com <ja...@gmail.com> #7
Oh, the reason why I had to hack in a non-interceptible TLS workaround was that intercepted calls happen during pthread_key maintenance that occurs both during pthread_join time as well as at exit time.
What was happening when I was using pthread_get/setspecific() was that after a thread was destroyed, an intercepted call was GENERATING a NEW key for the dead thread. Hilarity ensued afterwards.
What was happening when I was using pthread_get/setspecific() was that after a thread was destroyed, an intercepted call was GENERATING a NEW key for the dead thread. Hilarity ensued afterwards.
an...@gmail.com <an...@gmail.com> #8
Back to the topic at hand,
does anyone have any ideas on how to limit the bionic headerfile changes purely for aarch64?
https://code.google.com/p/android/issues/detail?id=180578
I *think* it might be better to limit the new internal symbols to 64bit arm parts, but there does not seem to be a nice way to do this (yet).
While my build currently "works", I don't think it will build for other platforms (i.e. 32bit arm, mips etc...)
Thanks
does anyone have any ideas on how to limit the bionic headerfile changes purely for aarch64?
I *think* it might be better to limit the new internal symbols to 64bit arm parts, but there does not seem to be a nice way to do this (yet).
While my build currently "works", I don't think it will build for other platforms (i.e. 32bit arm, mips etc...)
Thanks
vg...@gmail.com <vg...@gmail.com> #9
It looks like __aarch64__ is defined for Clang builds. I am not sure about gcc, nor can I say that the bionic folks are going to be pleased with architecture-specific stuff polluting high-level headers.
ma...@gmail.com <ma...@gmail.com> #10
@11: i think he's confused and expecting __aarch64__ to be defined in code that's built 32-bit.
ak...@gmail.com <ak...@gmail.com> #11
No, not confused (at least I think)
So the crux of the matter is this.
I need to touch some .S files, which are necessarily architecture specific, to add in the private symbols we need to support TSAN.
I can either touch ALL .S files (arm, arch64, x86 ...), or just the ones that gets used while building a 64 bit device (even if they are 32bit libraries)
Now, is it OKAY for me to touch all the .S files?
If that is the case, thenhttps://code.google.com/p/android/issues/detail?id=180578 is moot.
OTOH, If you guys want me to scope my changes purely for 64bit arm devices, then
https://code.google.com/p/android/issues/detail?id=180578 DOES matter IF there are ever any cases where 64bit library/executable calls out to 32bit library
I hope this is clear
So the crux of the matter is this.
I need to touch some .S files, which are necessarily architecture specific, to add in the private symbols we need to support TSAN.
I can either touch ALL .S files (arm, arch64, x86 ...), or just the ones that gets used while building a 64 bit device (even if they are 32bit libraries)
Now, is it OKAY for me to touch all the .S files?
If that is the case, then
OTOH, If you guys want me to scope my changes purely for 64bit arm devices, then
I hope this is clear
al...@gmail.com <al...@gmail.com> #12
In other words,
if it is okay for me to touch all the variant memset.S and strlen.S files, then I do NOT need to have arch specific exceptions in the new .h files.
The downside is that its gonna be a bigger patch :-/
What do you guys think?
if it is okay for me to touch all the variant memset.S and strlen.S files, then I do NOT need to have arch specific exceptions in the new .h files.
The downside is that its gonna be a bigger patch :-/
What do you guys think?
sh...@gmail.com <sh...@gmail.com> #13
Hi everyone.
I upload a set of patches, all tagged with this bug.
I have no idea if your gerrit handles stacked patches well. (It didn't before)
If it does not, I can always upload a merged patch.
The rough order of patches are
1. new files + pthreads + mman.h
2. system calls (all the .S files and the gensyscalls.py)
3. string.h and friends
4. malloc.h and friends
5. ioctl/tcgetattr
Its not readily apparent what the order of the patches should be.
Here are the change-ids:
Support for Thread Sanitizer for Bionic
Change-Id: I724fb8d77059d3e01e1c4336d1aa2c0c550bbb80
Add new system call weak aliases, modified so that it is not arm64 specific
Change-Id: I0011bd344ba9ce977e429081a0cb84d8e59463fc
Touching all of string.h
Change-Id: I826f328a1849331dc39d5ff6847be02aff2ff1ba
Now touching malloc/free and friends
Change-Id: I5a2d07bfcf332556aeb0c3734b5ba122c80ee567
Now touching ioctl/tcgetattr
Change-Id: Ia709a5e7acf22239ad57aa22c06a867da6f6ef14
I upload a set of patches, all tagged with this bug.
I have no idea if your gerrit handles stacked patches well. (It didn't before)
If it does not, I can always upload a merged patch.
The rough order of patches are
1. new files + pthreads + mman.h
2. system calls (all the .S files and the gensyscalls.py)
3. string.h and friends
4. malloc.h and friends
5. ioctl/tcgetattr
Its not readily apparent what the order of the patches should be.
Here are the change-ids:
Support for Thread Sanitizer for Bionic
Change-Id: I724fb8d77059d3e01e1c4336d1aa2c0c550bbb80
Add new system call weak aliases, modified so that it is not arm64 specific
Change-Id: I0011bd344ba9ce977e429081a0cb84d8e59463fc
Touching all of string.h
Change-Id: I826f328a1849331dc39d5ff6847be02aff2ff1ba
Now touching malloc/free and friends
Change-Id: I5a2d07bfcf332556aeb0c3734b5ba122c80ee567
Now touching ioctl/tcgetattr
Change-Id: Ia709a5e7acf22239ad57aa22c06a867da6f6ef14
ar...@gmail.com <ar...@gmail.com> #14
Hi.
I just pushed up a new changeset that combines the 5 mentioned above.
https://android-review.googlesource.com/#/c/162104/
(Apparently gerrit still can't handle stacked changesets without manual intervention.
It marked the 5 prior patches as "unmergeable")
I just pushed up a new changeset that combines the 5 mentioned above.
(Apparently gerrit still can't handle stacked changesets without manual intervention.
It marked the 5 prior patches as "unmergeable")
al...@gmail.com <al...@gmail.com> #16
do...@gmail.com <do...@gmail.com> #17
Thank you for your feedback. We assure you that we are doing our best to address the issue reported, however our product team has shifted work priority that doesn't include this issue. For now, we will be closing the issue as won't fix obsolete. If this issue currently still exists, we request that you log a new issue along with latest bug report here https://goo.gl/TbMiIO .
ar...@gmail.com <ar...@gmail.com> #18
does anybody knows why richfaces using ImageIO?
ag...@gmail.com <ag...@gmail.com> #19
Please provide richfaces support. It's very impoprtant since many people use
richfaces and would like to deploy these applications to App Engine
richfaces and would like to deploy these applications to App Engine
me...@gmail.com <me...@gmail.com> #20
I want to add some valication code image in the register form of my app. If ImageIO
is not in the whitelist, how can I do this? Google App Engine is such a toy!
is not in the whitelist, how can I do this? Google App Engine is such a toy!
ca...@gmail.com <ca...@gmail.com> #21
Please add richfaces support.
PS: Richfaces also references java.awt.Dimension, which is another restricted class.
Thanks.
PS: Richfaces also references java.awt.Dimension, which is another restricted class.
Thanks.
za...@gmail.com <za...@gmail.com> #22
Please, add RichFaces support. Thank you.
an...@gmail.com <an...@gmail.com> #23
Please, add RichFaces support. We can't port our devs to GAE because of that.
pa...@gmail.com <pa...@gmail.com> #24
Please, add it!!!!! I can't use GAE without RichFaces
rk...@gmail.com <rk...@gmail.com> #25
Another vote for richfaces support for GAE
ma...@gmail.com <ma...@gmail.com> #26
I vote.......
RichFaces for GAE
RichFaces for GAE
ro...@gmail.com <ro...@gmail.com> #27
Please, add RichFaces support. Thank you.
dj...@gmail.com <dj...@gmail.com> #28
You sure do have my vote for this issue. I've been waiting for java.awt.* classes for
a long time to be white-listed on GAE.
a long time to be white-listed on GAE.
yc...@google.com <yc...@google.com> #29
Please, do not add comments to say "Yay!, please please please support rich faces yes
yes yes". It notifies everyone following the issue (and apologies for this comment
too). Star the issue instead ! (like 98 people did so far!)
Thanks :)
Have fun !
yes yes". It notifies everyone following the issue (and apologies for this comment
too). Star the issue instead ! (like 98 people did so far!)
Thanks :)
Have fun !
gl...@gmail.com <gl...@gmail.com> #30
Gostaria que o gae tivesse suporte a richfaces
Would you like GAE have support RichFaces
Would you like GAE have support RichFaces
pe...@gmail.com <pe...@gmail.com> #31
richfaces would be nice
hb...@gmail.com <hb...@gmail.com> #32
richfaces would be nice
an...@gmail.com <an...@gmail.com> #33
As Google doesn't seem to find it important to support one the major JSF framework on GAE (it makes me think of
another company that forbid flash on its platform, but it's not the same since "Google doesn't do evil" and doesn't
have a technology they prefer to push instead of JSF :-) ). Richfaces start to work to support GAE on it's v4
release. If you're interested please vote on the Jira ticket here :
https://jira.jboss.org/jira/browse/RFPL-567
another company that forbid flash on its platform, but it's not the same since "Google doesn't do evil" and doesn't
have a technology they prefer to push instead of JSF :-) ). Richfaces start to work to support GAE on it's v4
release. If you're interested please vote on the Jira ticket here :
re...@gmail.com <re...@gmail.com> #34
All of my content I submit to begin
rd...@gmail.com <rd...@gmail.com> #35
I'd like to use richfaces with gae
em...@gmail.com <em...@gmail.com> #36
Please, add RichFaces support. Thank you.
m....@gtempaccount.com <m....@gtempaccount.com> #37
Please, add RichFaces support.Please.
ga...@gmail.com <ga...@gmail.com> #38
Please, add RichFaces support. thx
he...@yahoo.com <he...@yahoo.com> #39
I would love do have RichFaces suopported by GAE .
so...@iisigroup.com <so...@iisigroup.com> #40
I love RichFaces and GAE. Please add it!
cd...@gmail.com <cd...@gmail.com> #41
Please, RichFaces for GAE.
qu...@gmail.com <qu...@gmail.com> #42
Please add support to richfaces
as...@gmail.com <as...@gmail.com> #44
hope google will add richface support soon.thanks
su...@gmail.com <su...@gmail.com> #45
There are multiple reasons why somebody would like to have ImageIO in GAE.
If your reason is that you would like to run RichFaces on GAE then you can do so without ImageIO in the new RF version 4. And while the final version of RF 4 might not show up before Q1 2011 you can already do testing with the M3 release.
The RichFaces 4.0 Milestone 3 build has a Maven archetype that builds a GAE compatible version of RF.
Check out the readme here:http://anonsvn.jboss.org/repos/richfaces/tags/4.0.0.20101004-M3/archetypes/rf-gae-sample/readme.txt
If your reason is that you would like to run RichFaces on GAE then you can do so without ImageIO in the new RF version 4. And while the final version of RF 4 might not show up before Q1 2011 you can already do testing with the M3 release.
The RichFaces 4.0 Milestone 3 build has a Maven archetype that builds a GAE compatible version of RF.
Check out the readme here:
dj...@gmail.com <dj...@gmail.com> #46
I don't use RF, but ImageIO and other awt libraries would help me a lot to make barcodes on the fly with the iText library. I have all my servlets ready and tested outside App Engine, now I just need Google allow me and everyone else who need image functionality to use awt. =)
yj...@gmail.com <yj...@gmail.com> #47
Please add support for Richfaces. Thannks
je...@gtempaccount.com <je...@gtempaccount.com> #48
I would like to use Apache FOP for creating PDF documents, but this is impossible due to the missing javax.imageio.ImageIO.
dj...@gmail.com <dj...@gmail.com> #49
I saw a lot of movement on this request, some logs by the project members but... How is the progress of this request. It's kind of strange to not know if the google guys are working on this, or not. A little of feedback doesn't hurt, does it?
ja...@googlemail.com <ja...@googlemail.com> #50
I'm also interested in PDF creation using Apache FOP.
@djdarkin...: Could you point me to the logs you mentioned?
@djdarkin...: Could you point me to the logs you mentioned?
dj...@gmail.com <dj...@gmail.com> #51
@jan.morl...: Actually, forgive me, I was a little mistaken, there's just one log entrance as you can see on the Comment n# 44 of this Issue Post.
I think that means that someone on google is treating this request. Or am I terribly wrong?
I think that means that someone on google is treating this request. Or am I terribly wrong?
se...@gmail.com <se...@gmail.com> #52
Hello!
I have created amazing application with server processing of a graphic.
I want to deploy it to google app engine.
But i have got...
java.lang.NoClassDefFoundError: javax.imageio.ImageIO is a restricted class. Please see the Google App Engine developer's guide for more details.
It is very bad for all humanity!
Please, could you add javax.imageio.ImageIO to whitelist or give us workaround.
I have created amazing application with server processing of a graphic.
I want to deploy it to google app engine.
But i have got...
java.lang.NoClassDefFoundError: javax.imageio.ImageIO is a restricted class. Please see the Google App Engine developer's guide for more details.
It is very bad for all humanity!
Please, could you add javax.imageio.ImageIO to whitelist or give us workaround.
tu...@gmail.com <tu...@gmail.com> #53
Please add support for RichFaces... Thank you
un...@gmail.com <un...@gmail.com> #54
Please add support for RichFaces... Thank you
ni...@gmail.com <ni...@gmail.com> #55
RichFaces 4 supports GAE perfectly
is...@gmail.com <is...@gmail.com> #56
Vote for Issue 5022 -- I believe it's more likely to happen.
di...@gmail.com <di...@gmail.com> #57
i want to use this library too
pr...@google.com <pr...@google.com> #58
Bulk edit: mark escalated issue as Accepted.
Description
JSF 1.1), I got the following exception. Would it be possible to add
javax.imageio.ImageIO to the JVM White List?
Thanks for your time.
Andy J.
----
Caused by: java.lang.NoClassDefFoundError: javax.imageio.ImageIO is a
restricted class. Please see the Google App Engine developer's guide for
more details.
at
com.google.apphosting.runtime.security.shared.stub.javax.imageio.ImageIO.<clinit>(ImageIO.java)
at
org.ajax4jsf.resource.ResourceBuilderImpl.<clinit>(ResourceBuilderImpl.java:110)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at
org.ajax4jsf.resource.InternetResourceBuilder.getInstance(InternetResourceBuilder.java:148)
at
org.ajax4jsf.renderkit.ChameleonRenderKitFactory.<init>(ChameleonRenderKitFactory.java:62)
... 40 more