Thank you, Ken. This is the reference to the current code in OpenJDK 8: https://github.com/openjdk/jdk8u/blob/105098218562ce8b62938fb7def2cde918df0b45/jdk/src/macosx/bin/java_md_macosx.c#L1027-L1062
On Tue, Jul 16, 2024 at 10:45 PM Ken Cunningham < [email protected]> wrote: > The usual equivalent older construct is this: > > > NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; > { > > } > [pool drain]; > > > which (AFAIK) does exactly the same thing as: > > @autoreleasepool > { > > } > > but just a little less beautifully. > > Now the commit you referenced has this older construct still in place. But > I didn't look at the current source code that you are compiling to see what > it has. > > Ken > > NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; > { } [pool drain]; > > On Jul 16, 2024, at 7:17 AM, Sergey Fedorov <[email protected]> wrote: > > > > On Tue, Jul 16, 2024 at 6:19 PM Saagar Jha <[email protected]> wrote: > > I’m guessing that since the block runs elsewhere there isn’t an > autoreleasepool for it anymore. You can probably fix this by wrapping the > call to JavaMain in @autoreleasepool {}? > > Saagar Jha > > > > This syntax is not supported by GCC, we need to use a standard ObjC > somehow. > > > >> > >> On Jul 10, 2024, at 02:47, Riccardo Mottola via macports-dev < > [email protected]> wrote: > >> > >> Hi, > >> > >> Sergio Had wrote: > >>> I have finally built the thing and it works, from looks of things, but > I get a message on startup: > >>> 36-25% > /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_java_openjdk8/openjdk8/work/jdk8u-jdk8u372-ga/build/openjdk8/images/j2sdk-image/bin/java > -version > >>> 2024-07-09 18:34:10.587 java[13785:1903] *** __NSAutoreleaseNoPool(): > Object 0x5d12e50 of class NSCFDictionary autoreleased with no pool in place > - just leaking > >>> 2024-07-09 18:34:10.590 java[13785:1903] *** __NSAutoreleaseNoPool(): > Object 0x5d13310 of class NSCFData autoreleased with no pool in place - > just leaking > >>> openjdk version "1.8.0_372" > >>> OpenJDK Runtime Environment (build 1.8.0_372-root_2024_07_09_15_56-b00) > >>> OpenJDK Zero VM (build 25.372-b00, interpreted mode) > >>> > >>> This seems to be related to the code, which upstream has switched to > block syntax (it does not build with GCC), so I had to use its earlier > version. > >>> From commit message it seems upstream also had this startup issue: > >>> > https://github.com/openjdk/jdk8u/commit/c29d997ca180ba5d812df7745c668cfc906be20b > >> > >> the message tells you that you are using NS* objects without an > Autorelease Pool. It will cause issues, but "should work", so your app > should run. > >> I notice what they appear to be CoreFoundation bridge object. You > should try to track where they come from, maybe put a breakpoint and > stacktrace. > >> > >> The snipped seen in the commit looks trivial, no nsblocks needed and > has an fresh ARP allocated, so I think the issue is elsewhere. > >> > >> Riccardo > > > >
