You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. == AspectJ 1.6.8
  2. _© Copyright 2009 Contributors. All rights reserved._
  3. The first sentence in the 1.6.7 readme was 'AspectJ 1.6.7 includes some
  4. radical internal changes.'
  5. Unfortunately not enough testing was done on 1.6.7 and two nasty issues
  6. were found that really needed addressing. Fixes for these issues are all
  7. that is new in 1.6.8.
  8. === Incorrect treatment of some aop.xml include/exclude patterns
  9. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=298786[Bug 298786]
  10. Basically, if a certain combination of includes and excludes were
  11. specified in the within section, then the weaver would fail to merge
  12. them correctly. The conditions for the failure are:
  13. * you need an exclude pattern that the weaver is not optimizing for
  14. (basically a pattern that could not be matched based upon the typename
  15. alone, eg. based on whether the type has an annotation)
  16. * you need two include patterns - one that is being optimized and one
  17. that is not
  18. These three meet that spec:
  19. [source, xml]
  20. ....
  21. <include within="*"/>
  22. <include within="@Foo *"/>
  23. <exclude within="*Funk*y*"/>
  24. ....
  25. The include="*" can be optimized. The include="@Foo *" is not optimized.
  26. The exclude="*Funk*y*" is not optimized (this one could be but isn't
  27. right now as it includes multiple wildcards).
  28. With that configuration any types that the include="*" would have
  29. accepted are not accepted.
  30. === Stack overflow problem in ReferenceType.isAssignableFrom()
  31. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=298908[Bug 298908]
  32. This is actually a problem AspectJ has had for a long time, but has
  33. always proved elusive to recreate. It turns out that it is memory
  34. related and the more aggressive policy in 1.6.7 causes it to occur much
  35. more frequently.
  36. The stack trace when this is hit looks like:
  37. [source, text]
  38. ....
  39. ...
  40. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  41. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:427)
  42. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  43. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:427)
  44. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  45. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:427)
  46. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  47. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:427)
  48. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  49. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:427)
  50. at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:393)
  51. ...
  52. ....
  53. The weaver has changed over the 1.5 and 1.6 releases and is now reaching
  54. a point where it really shrinks quite small when not in use (maybe in a
  55. loadtime environment you have finished loading all your classes). The
  56. aim is that it can rebuild any required state that is needed later. With
  57. the move in 1.6.7 from Soft to Weak references, things are being
  58. discarded much sooner and this is exercising the state rebuilding code
  59. that wasn't used that often prior to 1.6.7.
  60. The problem is actually because the call on a generic type to get the
  61. raw type was actually broken and returning the generic type. This then
  62. loops forever trying to get the raw type from the generic type. This
  63. happens because the world should store only raw types (which point to
  64. their generic form) but there was a bug in state rebuilding that instead
  65. put the generic type directly in the world.
  66. '''''
  67. Thanks to everyone who helped get to the bottom of these problems.