RFR: 8336529: (fs) UnixFileAttributeViews setTimes() failing on armhf, Ubuntu noble [v6]

Brian Burkhalter bpb at openjdk.org
Fri Aug 16 20:50:51 UTC 2024


On Thu, 15 Aug 2024 20:23:23 GMT, Vladimir Petko <vpetko at openjdk.org> wrote:

>> time_t transition in Debian/Ubuntu left 32 bit time_t  symbols in glibc. 
>> 
>> Looking up 'futimens' via dlsym returns 32 bit version of the function.  
>> This is causing failure to set last modified time (e.g. instead of year 2017 we get 1976 in the test).
>> Using the function directly correctly calls 64 bit versions. 
>> 
>> When we lookup functions with time_t arguments through dlsym() calls we should use 64 bit versions.
>> 
>> This MR adds a function to lookup 64 bit functions when time_t size is greater than 32 bit in line with the existing [time_t patch](https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=alioth/openjdk-8.git;a=blob;f=debian/patches/t64-dlsyms.diff;h=b2cc8f8a00244bc44900366ed08d7f246ad09904;hb=4c5085cd49fcdc04405e9039705935fde08644a7)
>> 
>> Testing:
>> `` sh configure --with-debug-level=fastdebug --enable-fallback-linker --with-jtreg=../jtreg/build/images/jtreg``
>> 
>> 
>> ==============================
>> Test summary
>> ==============================
>>    TEST                                              TOTAL  PASS  FAIL ERROR   
>>    jtreg:test/jdk/jdk/nio/zipfs/CopyMoveTests.java       1     1     0     0   
>>    jtreg:test/jdk/jdk/nio/zipfs/TestPosix.java           1     1     0     0   
>>    jtreg:test/jdk/java/nio/file/attribute/BasicFileAttributeView/Basic.java
>>                                                          1     1     0     0   
>>    jtreg:test/jdk/java/nio/file/attribute/BasicFileAttributeView/CreationTime.java
>>                                                          1     1     0     0   
>>    jtreg:test/jdk/java/nio/file/Files/SetLastModifiedTime.java
>>                                                          1     1     0     0   
>>    jtreg:test/jdk/java/nio/file/Files/SymlinkTime.java
>>                                                          1     1     0     0   
>>    jtreg:test/langtools/tools/javac/modules/MOptionTest.java
>>                                                          1     1     0     0   
>>    jtreg:test/hotspot/jtreg/runtime/cds/appcds/dynamicArchive/DynamicSharedSymbols.java
>>                                                          1     1     0     0   
>>    jtreg:test/hotspot/jtreg/runtime/cds/appcds/jcmd/JCmdTestDynamicDump.java
>>                                                          1     1     0     0   
>>    jtreg:test/hotspot/jtreg/runtime/cds/appcds/jcmd/JCmdTestFileSafety.java
>>                                                          1     1     0     0   
>>    jtreg:test/...
>
> Vladimir Petko has updated the pull request incrementally with one additional commit since the last revision:
> 
>   lookup symbol as a fallback

src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c line 265:

> 263:     void *func_ptr = NULL;
> 264:     if (sizeof(time_t) > 4) {
> 265:         func_ptr =  dlsym(RTLD_DEFAULT, symbol64);

Nitpick: extra space before `dlsym`.

src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c line 267:

> 265:         func_ptr =  dlsym(RTLD_DEFAULT, symbol64);
> 266:     }
> 267:     if (func_ptr == NULL)

It might be more readable if both `if` blocks had either no brackets or both had brackets.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/20208#discussion_r1720332587
PR Review Comment: https://git.openjdk.org/jdk/pull/20208#discussion_r1720333650


More information about the nio-dev mailing list