octave-app / octave-app

The Octave.app distribution
https://octave-app.org
170 stars 14 forks source link

Failed assertion warning: (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL' #62

Open apjanke opened 6 years ago

apjanke commented 6 years ago

When I fire up the Octave.app 4.4.0 beta build, I get this error message as the first output in the Command Window:

>> 2018-06-21 09:18 octave-gui[48030] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'
screen shot 2018-06-23 at 2 00 53 am
apjanke commented 6 years ago

I see a bunch of these during __run_test_suite__, too.

  libinterp/dldfcn/gzip.cc-tst ................................2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36:14.466 octave-gui[56643:31314756] Path  given to -[NSWorkspace iconForFile:] is not a full path.
2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'

2018-06-23 01:36 octave-gui[56643] (FSEvents.framework) FSEventStreamFlushSync(): failed assertion '(SInt64)last_id > 0LL'
apjanke commented 6 years ago

Unfortunately, it looks like this is coming from one of Octave's dependencies, and not Octave itself. There's no call to FSEventStreamFlushSync in Octave.

[~/local/repos/octave]
$ grep -r FSEventStreamFlushSync *

It does occur in Qt:

[~/tmp/qt/qt-everywhere-src-5.11.1]
$ grep -r FSEventStreamFlushSync *
qtbase/src/corelib/io/qfilesystemwatcher_fsevents.mm:        FSEventStreamFlushSync(stream);
qtbase/src/corelib/io/qfilesystemwatcher_fsevents.mm:    // soft-assert in FSEventStreamFlushSync in CarbonCore when no event occurred.

And Octave appears to use the Qt filesystem watcher, only in the File Editor.

[~/local/repos/octave]
$ grep -r QFileSystemWatcher *
libgui/src/m-editor/file-editor-tab.h:#include <QFileSystemWatcher>
libgui/src/m-editor/file-editor-tab.h:    QFileSystemWatcher _file_system_watcher;

The actual warning message appears to be emitted by one of Apple's libraries that Qt is linked against.

apjanke commented 6 years ago

Patching Qt to remove that FSEventStreamFlushSync(stream) call got rid of the warning. (Hope it's okay to remove, as stated here.

Done in https://github.com/octave-app/homebrew-octave-app/commit/4950d0a09cc702aa6d4668695a388e58c6ccbab1.

Will probably need to add and switch to a qt-octave-app formula to keep this clean.

apjanke commented 6 years ago

This warning only happens sometimes, too: I rebuilt Octave.app with an unpatched Qt, and when I fired it up, I'm not getting the assertion failure message any more.

apjanke commented 5 years ago

For reference: I did switch to a new qt-octave-app formula.

apjanke commented 5 years ago

This needs to be reported upstream to Qt and Apple.

Re-opening so it reminds me to do so.

apjanke commented 4 years ago

In the new 4.4.1-u1 beta 2 build, which was built with un-patched Qt, I'm getting this exception message all the time when using it. Annoying for me, and definitely not acceptable for regular users.

Switch back to using the patched Qt for the 4.4.1-u1 release.

apjanke commented 4 years ago

Reported upstream to Qt at https://bugreports.qt.io/browse/QTBUG-82102.

apjanke commented 4 years ago

Reported upstream to Apple: FB7575571.

I don't know why I procrastinated so long on reporting this upstream. Sorry.

apjanke commented 2 weeks ago

I never heard back from Qt about this; there were never any responses to that bug report.

Looks like it might be fixed in Qt 6, though. I haven't seen this happen at all in any of my Qt6-based 9.x beta builds, like 9.1.0 beta4 or 9.2.0 beta1.

Or maybe it was fixed in newer macOS versions. I finally upgraded from macOS 10.14 to the current macOS in the last year, so I'm on macOS 13 and 14 now. Maybe it just doesn't happen on those macOS versions.