0

使用 1.6.4.1 SDK,当我运行 appcfg.sh 时,我得到“5% 扫描 jsp 文件”,然后它永远旋转(我让它在一夜之间运行),消耗了我的一个 CPU 的 100%。起初,我怀疑它与编译 JSP 问题相同,但我什至没有做到这一点。它看起来像是 AbstractGlob 和/或 javax.util.Regex 中的某种错误。该项目在这里,以防您想自己复制它。

其他人有这种经验吗?知道可能是什么原因造成的吗?有什么办法可以绕过它,以便我可以上传我的应用程序?

这是来自 kill -QUIT 的堆栈跟踪:

1)

Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):

"Timer-0" daemon prio=5 tid=1029d0000 nid=0x10c304000 in Object.wait() [10c303000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f45077b0> (a java.util.TaskQueue)
    at java.util.TimerThread.mainLoop(Timer.java:509)
    - locked <7f45077b0> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=10b078000 nid=0x10c201000 waiting on condition [10c200000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
    at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=10b00b800 nid=0x10bd01000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=9 tid=10b00a800 nid=0x10ba04000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=9 tid=10b00a000 nid=0x10b901000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=10b009000 nid=0x10a704000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=10b008000 nid=0x10a601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=1028d2000 nid=0x10a0ef000 in Object.wait() [10a0ee000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=1028d1000 nid=0x109fec000 in Object.wait() [109feb000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f4507570> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <7f4507570> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=102801000 nid=0x100501000 runnable [1004ff000]
   java.lang.Thread.State: RUNNABLE
    at java.lang.Character.codePointAt(Character.java:2335)
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3344)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3770)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Slice.match(Pattern.java:3482)
    at java.util.regex.Matcher.match(Matcher.java:1127)
    at java.util.regex.Matcher.matches(Matcher.java:502)
    at com.google.apphosting.utils.glob.AbstractGlob.matches(AbstractGlob.java:48)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:56)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:52)
    at com.google.apphosting.utils.glob.GlobIntersector.reorderAndBlendChildren(GlobIntersector.java:95)
    at com.google.apphosting.utils.glob.GlobIntersector.getIntersection(GlobIntersector.java:68)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.getGlobPatterns(AppYamlTranslator.java:416)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.size(AppYamlTranslator.java:390)
    at com.google.appengine.tools.admin.AppYamlTranslator.translateWebXml(AppYamlTranslator.java:191)
    at com.google.appengine.tools.admin.AppYamlTranslator.getYaml(AppYamlTranslator.java:83)
    at com.google.appengine.tools.admin.Application.generateAppYaml(Application.java:897)
    at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:473)
    at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:327)
    at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:52)
    at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:641)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:172)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:69)
    at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:65)

"VM Thread" prio=9 tid=1028cc800 nid=0x109ee9000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=102802800 nid=0x102401000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=102803000 nid=0x102504000 runnable 

"Gang worker#2 (Parallel GC Threads)" prio=9 tid=102803800 nid=0x102607000 runnable 

"Gang worker#3 (Parallel GC Threads)" prio=9 tid=102804000 nid=0x10270a000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10287f800 nid=0x109bf0000 runnable 
"VM Periodic Task Thread" prio=10 tid=10b01d000 nid=0x10be04000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=102801800 nid=0x1017f9000 runnable 
JNI global references: 1671

Heap
 par new generation   total 19136K, used 13388K [7f3000000, 7f44c0000, 7f44c0000)
  eden space 17024K,  77% used [7f3000000, 7f3cf67e8, 7f40a0000)
  from space 2112K,   5% used [7f42b0000, 7f42cca00, 7f44c0000)
  to   space 2112K,   0% used [7f40a0000, 7f40a0000, 7f42b0000)
 concurrent mark-sweep generation total 63872K, used 4234K [7f44c0000, 7f8320000, 7fae00000)
 concurrent-mark-sweep perm gen total 21248K, used 14477K [7fae00000, 7fc2c0000, 800000000)

2)

^\2012-04-12 19:03:02
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):

"Timer-0" daemon prio=5 tid=1029d0000 nid=0x10c304000 in Object.wait() [10c303000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f45077b0> (a java.util.TaskQueue)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Timer.java:483)
    - locked <7f45077b0> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=10b078000 nid=0x10c201000 waiting on condition [10c200000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
    at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=10b00b800 nid=0x10bd01000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=9 tid=10b00a800 nid=0x10ba04000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=9 tid=10b00a000 nid=0x10b901000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=10b009000 nid=0x10a704000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=10b008000 nid=0x10a601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=1028d2000 nid=0x10a0ef000 in Object.wait() [10a0ee000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=1028d1000 nid=0x109fec000 in Object.wait() [109feb000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f4507570> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <7f4507570> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=102801000 nid=0x100501000 runnable [1004ff000]
   java.lang.Thread.State: RUNNABLE
    at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3366)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Slice.match(Pattern.java:3482)
    at java.util.regex.Matcher.match(Matcher.java:1127)
    at java.util.regex.Matcher.matches(Matcher.java:502)
    at com.google.apphosting.utils.glob.AbstractGlob.matches(AbstractGlob.java:48)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:56)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:52)
    at com.google.apphosting.utils.glob.GlobIntersector.reorderAndBlendChildren(GlobIntersector.java:95)
    at com.google.apphosting.utils.glob.GlobIntersector.getIntersection(GlobIntersector.java:68)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.getGlobPatterns(AppYamlTranslator.java:416)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.size(AppYamlTranslator.java:390)
    at com.google.appengine.tools.admin.AppYamlTranslator.translateWebXml(AppYamlTranslator.java:191)
    at com.google.appengine.tools.admin.AppYamlTranslator.getYaml(AppYamlTranslator.java:83)
    at com.google.appengine.tools.admin.Application.generateAppYaml(Application.java:897)
    at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:473)
    at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:327)
    at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:52)
    at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:641)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:172)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:69)
    at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:65)

"VM Thread" prio=9 tid=1028cc800 nid=0x109ee9000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=102802800 nid=0x102401000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=102803000 nid=0x102504000 runnable 

"Gang worker#2 (Parallel GC Threads)" prio=9 tid=102803800 nid=0x102607000 runnable 

"Gang worker#3 (Parallel GC Threads)" prio=9 tid=102804000 nid=0x10270a000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10287f800 nid=0x109bf0000 runnable 
"VM Periodic Task Thread" prio=10 tid=10b01d000 nid=0x10be04000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=102801800 nid=0x1017f9000 runnable 
JNI global references: 1709

Heap
 par new generation   total 19136K, used 9948K [7f3000000, 7f44c0000, 7f44c0000)
  eden space 17024K,  58% used [7f3000000, 7f39b6118, 7f40a0000)
  from space 2112K,   0% used [7f40a0000, 7f40a1000, 7f42b0000)
  to   space 2112K,   0% used [7f42b0000, 7f42b0000, 7f44c0000)
 concurrent mark-sweep generation total 63872K, used 4726K [7f44c0000, 7f8320000, 7fae00000)
 concurrent-mark-sweep perm gen total 21248K, used 14489K [7fae00000, 7fc2c0000, 800000000)

3)

^\2012-04-12 19:03:50
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):

"Timer-0" daemon prio=5 tid=1029d0000 nid=0x10c304000 in Object.wait() [10c303000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f45077b0> (a java.util.TaskQueue)
    at java.lang.Object.wait(Object.java:485)
    at java.util.TimerThread.mainLoop(Timer.java:483)
    - locked <7f45077b0> (a java.util.TaskQueue)
    at java.util.TimerThread.run(Timer.java:462)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=10b078000 nid=0x10c201000 waiting on condition [10c200000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
    at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=10b00b800 nid=0x10bd01000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=9 tid=10b00a800 nid=0x10ba04000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=9 tid=10b00a000 nid=0x10b901000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=10b009000 nid=0x10a704000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=10b008000 nid=0x10a601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=1028d2000 nid=0x10a0ef000 in Object.wait() [10a0ee000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <7f44f0e08> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=1028d1000 nid=0x109fec000 in Object.wait() [109feb000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f4507570> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <7f4507570> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=102801000 nid=0x100501000 runnable [1004ff000]
   java.lang.Thread.State: RUNNABLE
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3789)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:3782)
    at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
    at java.util.regex.Pattern$Slice.match(Pattern.java:3482)
    at java.util.regex.Matcher.match(Matcher.java:1127)
    at java.util.regex.Matcher.matches(Matcher.java:502)
    at com.google.apphosting.utils.glob.AbstractGlob.matches(AbstractGlob.java:48)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:56)
    at com.google.apphosting.utils.glob.AbstractGlob.matchesAll(AbstractGlob.java:52)
    at com.google.apphosting.utils.glob.GlobIntersector.reorderAndBlendChildren(GlobIntersector.java:95)
    at com.google.apphosting.utils.glob.GlobIntersector.getIntersection(GlobIntersector.java:68)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.getGlobPatterns(AppYamlTranslator.java:416)
    at com.google.appengine.tools.admin.AppYamlTranslator$AbstractHandlerGenerator.size(AppYamlTranslator.java:390)
    at com.google.appengine.tools.admin.AppYamlTranslator.translateWebXml(AppYamlTranslator.java:191)
    at com.google.appengine.tools.admin.AppYamlTranslator.getYaml(AppYamlTranslator.java:83)
    at com.google.appengine.tools.admin.Application.generateAppYaml(Application.java:897)
    at com.google.appengine.tools.admin.Application.createStagingDirectory(Application.java:473)
    at com.google.appengine.tools.admin.AppAdminImpl.doUpdate(AppAdminImpl.java:327)
    at com.google.appengine.tools.admin.AppAdminImpl.update(AppAdminImpl.java:52)
    at com.google.appengine.tools.admin.AppCfg$UpdateAction.execute(AppCfg.java:641)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:172)
    at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:69)
    at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:65)

"VM Thread" prio=9 tid=1028cc800 nid=0x109ee9000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=102802800 nid=0x102401000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=102803000 nid=0x102504000 runnable 

"Gang worker#2 (Parallel GC Threads)" prio=9 tid=102803800 nid=0x102607000 runnable 

"Gang worker#3 (Parallel GC Threads)" prio=9 tid=102804000 nid=0x10270a000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10287f800 nid=0x109bf0000 runnable 
"VM Periodic Task Thread" prio=10 tid=10b01d000 nid=0x10be04000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=102801800 nid=0x1017f9000 runnable 
JNI global references: 1709

Heap
 par new generation   total 19136K, used 9956K [7f3000000, 7f44c0000, 7f44c0000)
  eden space 17024K,  58% used [7f3000000, 7f39b81b8, 7f40a0000)
  from space 2112K,   0% used [7f40a0000, 7f40a1000, 7f42b0000)
  to   space 2112K,   0% used [7f42b0000, 7f42b0000, 7f44c0000)
 concurrent mark-sweep generation total 63872K, used 4726K [7f44c0000, 7f8320000, 7fae00000)
 concurrent-mark-sweep perm gen total 21248K, used 14489K [7fae00000, 7fc2c0000, 800000000)

[编辑]

当我将 WebXml 映射更改为security-constraintfrom /**to/*时,问题就解决了。我的理解是这个新的安全约束设置会匹配/foo但不匹配/foo/bar:对吗?如果是这样,那么我可能有办法绕过这个错误。但它看起来像一个非常讨厌的错误AbstractGlob,无论人们在哪里都可以找到该代码......

4

2 回答 2

0

Java GAE SDK 有一个版本 1.6.4.1... 看起来它解决了其他问题,但它可能值得一试。 https://groups.google.com/d/msg/google-appengine/V4KHnq2f03Y/X24dzXVJyMQJ

于 2012-04-12T04:24:11.580 回答
0

当我将安全约束的 WebXml 映射从 /** 更改为 /* 时,问题就解决了。我的理解是,这个新的安全约束设置将匹配 /foo 但不匹配 /foo/bar:对吗?如果是这样,那么我可能有办法绕过这个错误。但它看起来像 AbstractGlob 中的一个非常讨厌的错误,任何人都可以在任何地方找到该代码......

于 2020-11-19T00:36:41.837 回答