Closed Bug 1656285 Opened 4 years ago Closed 4 years ago

Perma [Tier 2] /builds/worker/fetches/clang/bin/../x86_64-w64-mingw32/include/stdio.h:668:26: error: conflicting types for 'fseeko64'

Categories

(Core :: MFBT, defect, P5)

defect

Tracking

()

RESOLVED FIXED
81 Branch
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox78 --- unaffected
firefox79 --- unaffected
firefox80 --- unaffected
firefox81 --- verified

People

(Reporter: intermittent-bug-filer, Assigned: cpeterson)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: intermittent-failure, regression, Whiteboard: [retriggered])

Attachments

(1 file)

Filed by: malexandru [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=311530915&repo=mozilla-central
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/Aqugds2GR52RWFTIL4s8vQ/runs/0/artifacts/public/logs/live_backing.log


[task 2020-07-30T16:06:01.514Z] 16:06:01     INFO -  make[4]: Entering directory '/builds/worker/workspace/obj-build/modules/libmar/sign'
[task 2020-07-30T16:06:01.514Z] 16:06:01     INFO -  modules/libmar/sign/Unified_c_modules_libmar_sign0.o
[task 2020-07-30T16:06:01.514Z] 16:06:01     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/i686-w64-mingw32-clang -std=gnu99 -o Unified_c_modules_libmar_sign0.o -c  -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -ftrivial-auto-var-init=pattern -DDEBUG=1 -DMAR_NSS -I/builds/worker/checkouts/gecko/modules/libmar/sign -I/builds/worker/workspace/obj-build/modules/libmar/sign -I/builds/worker/checkouts/gecko/modules/libmar/src -I/builds/worker/checkouts/gecko/modules/libmar/verify -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -include /builds/worker/workspace/obj-build/mozilla-config.h -DMOZILLA_CLIENT -Qunused-arguments -fcrash-diagnostics-dir=/builds/worker/artifacts -D_HAS_EXCEPTIONS=0 -fno-strict-aliasing -mstackrealign -ffunction-sections -fdata-sections -fno-math-errno -pipe -g -gcodeview -O2 -fno-omit-frame-pointer -funwind-tables -Qunused-arguments -Wall -Wbitfield-enum-conversion -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wunreachable-code -Wunreachable-code-return -Wclass-varargs -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wstring-conversion -Wtautological-overlap-compare -Wtautological-unsigned-enum-zero-compare -Wtautological-unsigned-zero-compare -Wno-error=tautological-type-limit-compare -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=backend-plugin -Wno-error=return-std-move -Wno-error=atomic-alignment -Wno-unknown-pragmas -Wno-unused-function -Wno-conversion-null -Wno-switch -Wno-enum-compare -Wno-gnu-zero-variadic-macro-arguments -Werror=implicit-function-declaration -std=gnu11 -fexperimental-new-pass-manager  -MD -MP -MF .deps/Unified_c_modules_libmar_sign0.o.pp   Unified_c_modules_libmar_sign0.c
[task 2020-07-30T16:06:01.514Z] 16:06:01     INFO -  In file included from Unified_c_modules_libmar_sign0.c:2:
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  In file included from /builds/worker/checkouts/gecko/modules/libmar/sign/mar_sign.c:16:
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  In file included from /builds/worker/checkouts/gecko/modules/libmar/src/mar_private.h:72:
[task 2020-07-30T16:06:01.515Z] 16:06:01    ERROR -  /builds/worker/fetches/clang/bin/../i686-w64-mingw32/include/stdio.h:668:26: error: conflicting types for 'fseeko64'
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -    __mingw_static_ovr int fseeko64(FILE *_File, _off64_t _Offset, int _Origin) {
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                           ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  /builds/worker/fetches/clang/bin/../i686-w64-mingw32/include/stdio.h:665:26: note: previous definition is here
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -    __mingw_static_ovr int fseeko(FILE *_File, _off_t _Offset, int _Origin) {
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                           ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  /builds/worker/checkouts/gecko/modules/libmar/src/mar_private.h:61:20: note: expanded from macro 'fseeko'
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  #    define fseeko fseeko64
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                     ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  In file included from Unified_c_modules_libmar_sign0.c:2:
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  In file included from /builds/worker/checkouts/gecko/modules/libmar/sign/mar_sign.c:16:
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  In file included from /builds/worker/checkouts/gecko/modules/libmar/src/mar_private.h:72:
[task 2020-07-30T16:06:01.515Z] 16:06:01    ERROR -  /builds/worker/fetches/clang/bin/../i686-w64-mingw32/include/stdio.h:674:31: error: conflicting types for 'ftello64'
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -    __mingw_static_ovr _off64_t ftello64(FILE *_File) {
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                                ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  /builds/worker/fetches/clang/bin/../i686-w64-mingw32/include/stdio.h:671:29: note: previous definition is here
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -    __mingw_static_ovr _off_t ftello(FILE *_File) {
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                              ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  /builds/worker/checkouts/gecko/modules/libmar/src/mar_private.h:60:20: note: expanded from macro 'ftello'
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  #    define ftello ftello64
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -                     ^
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  2 errors generated.
[task 2020-07-30T16:06:01.515Z] 16:06:01    ERROR -  make[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:669: Unified_c_modules_libmar_sign0.o] Error 1
[task 2020-07-30T16:06:01.515Z] 16:06:01     INFO -  make[4]: Leaving directory '/builds/worker/workspace/obj-build/modules/libmar/sign'
[task 2020-07-30T16:06:01.516Z] 16:06:01    ERROR -  make[3]: *** [/builds/worker/checkouts/gecko/config/recurse.mk:72: modules/libmar/sign/target-objects] Error 2
[task 2020-07-30T16:06:01.516Z] 16:06:01     INFO -  make[3]: *** Waiting for unfinished jobs....
[task 2020-07-30T16:06:01.602Z] 16:06:01     INFO -  make[4]: Entering directory '/builds/worker/workspace/obj-build/modules/brotli'
[task 2020-07-30T16:06:01.603Z] 16:06:01     INFO -  modules/brotli/host_state.o
[task 2020-07-30T16:06:01.604Z] 16:06:01     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang -std=gnu99 -o host_state.o -c  -DXP_UNIX -O3 -DDEBUG=1 -I/builds/worker/checkouts/gecko/modules/brotli -I/builds/worker/workspace/obj-build/modules/brotli -I/builds/worker/workspace/obj-build/dist/include -MD -MP -MF .deps/host_state.o.pp -I/builds/worker/workspace/obj-build/dist/include/nspr /builds/worker/checkouts/gecko/modules/brotli/dec/state.c
[task 2020-07-30T16:06:01.604Z] 16:06:01     INFO -  make[4]: Leaving directory '/builds/worker/workspace/obj-build/modules/brotli'
[task 2020-07-30T16:06:01.651Z] 16:06:01     INFO -  make[4]: Entering directory '/builds/worker/workspace/obj-build/modules/brotli'
<...>
[task 2020-07-30T16:06:32.273Z] 16:06:32     INFO - Return code: 0
[task 2020-07-30T16:06:32.273Z] 16:06:32     INFO - Running post-run listener: _shutdown_sccache
[task 2020-07-30T16:06:32.273Z] 16:06:32     INFO - Running command: ['/builds/worker/fetches/sccache/sccache', '--stop-server'] in /builds/worker/checkouts/gecko
[task 2020-07-30T16:06:32.273Z] 16:06:32     INFO - Copy/paste: /builds/worker/fetches/sccache/sccache --stop-server
[task 2020-07-30T16:06:32.276Z] 16:06:32     INFO -  Stopping sccache server...
[task 2020-07-30T16:06:32.276Z] 16:06:32     INFO -  Compile requests                   3006
[task 2020-07-30T16:06:32.276Z] 16:06:32     INFO -  Compile requests executed          2982
[task 2020-07-30T16:06:32.276Z] 16:06:32     INFO -  Cache hits                          236
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache hits (C/C++)                  212
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache hits (Rust)                    24
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache misses                       2745
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache misses (C/C++)               2745
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache timeouts                        0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache read errors                     0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Forced recaches                       0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache write errors                    0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Compilation failures                  1
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Cache errors                          0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Non-cacheable compilations            0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Non-cacheable calls                  14
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Non-compilation calls                10
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Unsupported compiler calls            0
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Average cache write               0.099 s
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Average cache read miss           4.437 s
[task 2020-07-30T16:06:32.277Z] 16:06:32     INFO -  Average cache read hit            0.080 s
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  Failed distributed compilations       0
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  Non-cacheable reasons:
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  crate-type                            9
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  -                                     2
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  unknown source language               2
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  -E                                    1
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO -  Cache location                  S3, bucket: Bucket(name=taskcluster-level-3-sccache-us-east-1, base_url=http://taskcluster-level-3-sccache-us-east-1.s3.amazonaws.com/)
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO - Return code: 0
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO - Running post-run listener: _summarize
[task 2020-07-30T16:06:32.278Z] 16:06:32    ERROR - # TBPL FAILURE #
[task 2020-07-30T16:06:32.278Z] 16:06:32     INFO - [mozharness: 2020-07-30 16:06:32.278633Z] FxDesktopBuild summary:
[task 2020-07-30T16:06:32.278Z] 16:06:32    ERROR - # TBPL FAILURE #
[fetches 2020-07-30T16:06:32.322Z] removing /builds/worker/fetches
[fetches 2020-07-30T16:06:32.907Z] finished
[taskcluster 2020-07-30 16:06:33.217Z] === Task Finished ===
[taskcluster 2020-07-30 16:06:34.874Z] Unsuccessful task run with exit code: 255 completed in 966.429 seconds

Bug 1653182 seems more likely, since the # define ftello ftello64 is in libmar. Maybe prior to C11 the conflict was allowed?

(In reply to :dmajor from comment #2)

Bug 1653182 seems more likely, since the # define ftello ftello64 is in libmar. Maybe prior to C11 the conflict was allowed?

Yeah. I assume this is fallout from my C11 libmar bug 1653182 change. I tested my changes on Try, but I guess I didn't include mingw builds.

I see redefinitions of ftello ftello64 in libpvx and aom, too. They shouldn't be a problem because my C11 patch only changed libmar.

https://searchfox.org/mozilla-central/search?case=true&q=ftello%20ftello64

Assignee: nobody → cpeterson
Flags: needinfo?(cpeterson)
Regressed by: 1653182
Has Regression Range: --- → yes
Keywords: regression

The problem is that mar_private.h's #define ftello ftello64 clobbers MinGW's ftello and fseeko declarations in stdio.h. But I don't know yet why this used to work!

#ifdef _UCRT
  __mingw_static_ovr int fseeko(FILE *_File, _off_t _Offset, int _Origin) {
    return fseek(_File, _Offset, _Origin);
  }
  __mingw_static_ovr int fseeko64(FILE *_File, _off64_t _Offset, int _Origin) {
    return _fseeki64(_File, _Offset, _Origin);
  }
  __mingw_static_ovr _off_t ftello(FILE *_File) {
    return ftell(_File);
  }
  __mingw_static_ovr _off64_t ftello64(FILE *_File) {
    return _ftelli64(_File);
  }
#else
  int fseeko64(FILE* stream, _off64_t offset, int whence);
  int fseeko(FILE* stream, _off_t offset, int whence);
  /* Returns truncated 64bit off_t */
  _off_t ftello(FILE * stream);
  _off64_t ftello64(FILE * stream);
#endif

Note that the redefinition of ftello to ftello64 instead of _ftelli64 to "Avoid MinGW's unreliable _ftelli64() and _fseeki64() implementations" (bug 1561636) is no longer meaningful because MingW's ftello64 is now implemented above using _ftelli64!

I grabbed the MingW headers from https://sourceforge.net/projects/mingw-w64/. Based on the line numbers from the compilation errors, these headers appear to match the MinGW headers used in mozilla-central builds, but I don't know for certain.

See Also: → 1561636

Here is a green Try build of my new patch applied immediately after my patches that broke the MinGW build:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=c2914144b4db203e0bbcb01dc674e92602ea7754

I also had to apply the patch from bug 1656185 to fix an unrelated, preexisting MinGW build error: CmdLineAndEnvUtils.h:485:5: error: no template named 'nsTAutoString'.

See Also: → 1656185

Include stdio.h before redefining ftello and fseeko to avoid clobbering the ftello() and fseeko() function declarations in MinGW's stdio.h.

I don't know why my change to compile libmar as C11 (bug 1653182) caused this ftello/fseeko problem. From my inspection of MinGW's stdio.h, this problem should have already been happening!

See Also: → 1656725
Whiteboard: [retriggered]
Pushed by cpeterson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/73609e3edf4c
libmar: Avoid clobbering ftello() and fseeko() declarations in MinGW's stdio.h. r=mhowell
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch

(In reply to Intermittent Failures Robot from comment #10)

12 failures in 4618 pushes (0.003 failures/push) were associated with this bug in the last 7 days.

Those 12 failures stopped after 2020-08-03 after this fix was merged to mozilla-central on 2020-08-03 (comment 9).

(In reply to Chris Peterson [:cpeterson] from comment #4)

The problem is that mar_private.h's #define ftello ftello64 clobbers MinGW's ftello and fseeko declarations in stdio.h. But I don't know yet why this used to work!

#ifdef _UCRT
  __mingw_static_ovr int fseeko(FILE *_File, _off_t _Offset, int _Origin) {
    return fseek(_File, _Offset, _Origin);
  }
  __mingw_static_ovr int fseeko64(FILE *_File, _off64_t _Offset, int _Origin) {
    return _fseeki64(_File, _Offset, _Origin);
  }
  __mingw_static_ovr _off_t ftello(FILE *_File) {
    return ftell(_File);
  }
  __mingw_static_ovr _off64_t ftello64(FILE *_File) {
    return _ftelli64(_File);
  }
#else
  int fseeko64(FILE* stream, _off64_t offset, int whence);
  int fseeko(FILE* stream, _off_t offset, int whence);
  /* Returns truncated 64bit off_t */
  _off_t ftello(FILE * stream);
  _off64_t ftello64(FILE * stream);
#endif

Note that the redefinition of ftello to ftello64 instead of _ftelli64 to "Avoid MinGW's unreliable _ftelli64() and _fseeki64() implementations" (bug 1561636) is no longer meaningful because MingW's ftello64 is now implemented above using _ftelli64!

Yes. https://trac.torproject.org/projects/tor/ticket/26514#comment:19 has the context. We were using non-ucrt back then which hit the bugs in mingw-w64's implementation of those functions. That should not be an issue with ucrt-based builds anymore which we are doing now. I've opened bug 1663119 to remove the workaround we upstreamed back then.

Blocks: mingw-clang
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: