Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests failing on CLion using MinGW GCC #245

Open
UshnaGul opened this issue Apr 20, 2023 · 7 comments
Open

Tests failing on CLion using MinGW GCC #245

UshnaGul opened this issue Apr 20, 2023 · 7 comments
Labels
bug Something isn't working good first issue Good for newcomers help wanted Extra attention is needed

Comments

@UshnaGul
Copy link

I am experiencing issues with the tests failing on CLion using the MingW GCC compiler. Specifically, the issue seems to be caused by the readPhysicalPage method in CheckedFile.cpp throwing an exception due to the result not being equal to the physical page size. When I comment out this exception, the tests run fine, but then I encounter issues with checksum calculation.

Operating system: Windows 11 (64-bit)
Compiler version: GCC
IDE: CLion
Please let me know if there is any additional information that you need.

@asmaloney asmaloney added bug Something isn't working help wanted Extra attention is needed good first issue Good for newcomers labels Apr 20, 2023
@asmaloney
Copy link
Owner

Yet another issue in CheckedFile - I'm not surprised 😄

  1. Can you add the stack trace so we know where it's coming from?
  2. Which test is it failing on (or is it all of them)?
  3. My guess is that we are using _WIN32 somewhere where we should probably be using _MSC_VER (or vice-versa).
  4. I don't have any way to debug this since I don't use Windows/MinGW, so someone else will probably have to solve it and submit a PR.

@UshnaGul
Copy link
Author

Thanks for your quick response.
Here's the stack trace that I'm seeing when the readPhysicalPage method throws the exception:
ImageFileImpl() called, fileName=./no-path/empty.e57 mode=w
passed /n
ImageFileImpl() called, fileName=./empty.e57 mode=w
StructureNodeImpl::set(pathName=formatName, ni, autoPathCreate=0
pathNameParse pathname=formatName
pathNameParse returning: isRelative=1 fields.size()=1 fields=formatName,
StructureNodeImpl::set: level=0
field[0]: formatName
StructureNodeImpl::set(pathName=guid, ni, autoPathCreate=0
pathNameParse pathname=guid
pathNameParse returning: isRelative=1 fields.size()=1 fields=guid,
StructureNodeImpl::set: level=0
field[0]: guid
StructureNodeImpl::set(pathName=versionMajor, ni, autoPathCreate=0
pathNameParse pathname=versionMajor
pathNameParse returning: isRelative=1 fields.size()=1 fields=versionMajor,
StructureNodeImpl::set: level=0
field[0]: versionMajor
StructureNodeImpl::set(pathName=versionMinor, ni, autoPathCreate=0
pathNameParse pathname=versionMinor
pathNameParse returning: isRelative=1 fields.size()=1 fields=versionMinor,
StructureNodeImpl::set: level=0
field[0]: versionMinor
StructureNodeImpl::set(pathName=e57LibraryVersion, ni, autoPathCreate=0
pathNameParse pathname=e57LibraryVersion
pathNameParse returning: isRelative=1 fields.size()=1 fields=e57LibraryVersion,
StructureNodeImpl::set: level=0
field[0]: e57LibraryVersion
StructureNodeImpl::set(pathName=data3D, ni, autoPathCreate=0
pathNameParse pathname=data3D
pathNameParse returning: isRelative=1 fields.size()=1 fields=data3D,
StructureNodeImpl::set: level=0
field[0]: data3D
StructureNodeImpl::set(pathName=images2D, ni, autoPathCreate=0
pathNameParse pathname=images2D
pathNameParse returning: isRelative=1 fields.size()=1 fields=images2D,
StructureNodeImpl::set: level=0
field[0]: images2D
terminate called after throwing an instance of 'e57::E57Exception'
what(): E57 exception
Process finished with exit code 3
Error Read Failed: fileName=./empty.e57 result=1023/n
image

The read/write tests fail (6 of 26 tests passed) due to the readPhysicalPage method, and when I comment out the exception, the tests pass but I encounter issues with checksum calculation.

I'm not sure if _WIN32 or _MSC_VER is being used somewhere where it shouldn't be, but I'll take a look at the code to see if I can find anything. If anyone else has any ideas or suggestions, please let me know.

Thanks again for your help.

@asmaloney
Copy link
Owner

I would look at CheckedFile::lseek64 which is called (eventually) by this line:

      const uint64_t physicalLength = length( Physical );

That #ifdef section around line 488 is one of the potential _WIN32/_MSC_VER places I'm talking about. I wonder if it's using the wrong seek function?

My guess is that that first check should be for MSVC rather than Windows and that we need to add or adjust one of the cases there to handle MinGW somehow.

I don't know what _LARGEFILE64_SOURCE or __LARGE64_FILES are about at the top, but that might also be related?

@UshnaGul
Copy link
Author

d-bahr/CRCpp#17

Could the issue be related to this?
My CMake version is 3.25.2
The warnings are ignored when I run my project which includes the library but when I build the library separately, it errors out due to the following in CompilerWarnings.cmake:
function( set_warning_as_error )
message( STATUS "[${PROJECT_NAME}] Treating warnings as errors")

if ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.24" )
    set_target_properties( ${PROJECT_NAME}
        PROPERTIES
            COMPILE_WARNING_AS_ERROR ON
    )
else()
    # This will do nothing on compilers other than MSVC, Clang, Apple Clang, and GNU compilers.
    target_compile_options( ${PROJECT_NAME}
        PRIVATE
            $<${compiler_is_msvc}:
                /WX
            >
            $<$<OR:${compiler_is_clang},${compiler_is_gnu}>:
                -Werror
            >
    )
endif()

endfunction()

@asmaloney
Copy link
Owner

Could the issue be related to this?

Well not with that CMake code, but maybe with the warnings it's treating as errors. That CMake code just turns on errors when it builds itself to help catch compatibility issues between platforms/compilers.

What warnings/errors are being produced when you compile the library on its own (or turn on E57FORMAT_WARNING_AS_ERROR in your project)?

@UshnaGul
Copy link
Author

image

@asmaloney
Copy link
Owner

OK - that's a separate issue. I created a new one for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants