https://bugs.kde.org/show_bug.cgi?id=383723

--- Comment #4 from Andy <imol00+...@gmail.com> ---
Great - thanks John!

Those MACH_SEND_TRAILER warnings you mentioned earlier were reported a couple
of years ago:

  https://bugs.kde.org/show_bug.cgi?id=343306

Like you I cannot find any documentation on Darwin's workq except some source
code.

I found the most recent (released) version of workqueue_internal.h - for macOS
10.12.4:

 
https://opensource.apple.com/source/libpthread/libpthread-218.1.3/kern/workqueue_internal.h.auto.html

and where the WQOPS_SET_EVENT_MANAGER_PRIORITY case is processed (see
_workq_kernreturn):

 
https://opensource.apple.com/source/libpthread/libpthread-218.1.3/kern/kern_support.c.auto.html

and where it is called with this value (see
_pthread_workqueue_set_event_manager_priority):

 
https://opensource.apple.com/source/libpthread/libpthread-218.1.3/src/pthread.c.auto.html

Based on my reading I think you are correct and it can be ignored for
valgrind's purposes because it's for scheduling priorities.

Assuming I did things correctly to test this (simply adding "case 128: break;"
to PRE(workq_ops)), it now crashes with an "Unrecognised instruction" instead:

==57909== Callgrind, a call-graph generating cache profiler
==57909== Copyright (C) 2002-2017, and GNU GPL'd, by Josef Weidendorfer et al.
==57909== Using Valgrind-3.14.0.GIT and LibVEX; rerun with -h for copyright
info
==57909== Command:
/Users/maloney/dev/build-test-valgrind/test-valgrind.app/Contents/MacOS/test-valgrind
==57909== 
==57909== For interactive control, run 'callgrind_control -h'.
--57909-- run: /usr/bin/dsymutil
"/Users/maloney/dev/build-test-valgrind/test-valgrind.app/Contents/MacOS/test-valgrind"
--57909-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option
--57909-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 2
times)
--57909-- UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option (repeated 4
times)
==57909== valgrind: Unrecognised instruction at address 0x104018b50.
==57909==    at 0x104018B50: _dispatch_kq_init (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x1040168FB: _dispatch_client_callout (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x1040168B8: dispatch_once_f (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104018A90: _dispatch_kq_update (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x10401A0CD: _dispatch_kevent_resume (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x10401A03D: _dispatch_source_kevent_resume (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104019E85: _dispatch_source_kevent_register (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104029651: _dispatch_queue_resume_finalize_activation (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x105AE43C0: _notify_lib_init (in
/usr/lib/system/libsystem_notify.dylib)
==57909==    by 0x105AE49AB: notify_register_dispatch (in
/usr/lib/system/libsystem_notify.dylib)
==57909==    by 0x1049FE916: CFUniCharMapTo (in
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==57909==    by 0x1040168FB: _dispatch_client_callout (in
/usr/lib/system/libdispatch.dylib)
==57909== Your program just tried to execute an instruction that Valgrind
==57909== did not recognise.  There are two possible reasons for this.
==57909== 1. Your program has a bug and erroneously jumped to a non-code
==57909==    location.  If you are running Memcheck and you just saw a
==57909==    warning about a bad jump, it's probably your program's fault.
==57909== 2. The instruction is legitimate but Valgrind doesn't handle it,
==57909==    i.e. it's Valgrind's fault.  If you think this is the case or
==57909==    you are not sure, please let us know and we'll try to fix it.
==57909== Either way, Valgrind will now raise a SIGILL signal which will
==57909== probably kill your program.
==57909== 
==57909== Process terminating with default action of signal 4 (SIGILL)
==57909==  Illegal opcode at address 0x104018B50
==57909==    at 0x104018B50: _dispatch_kq_init (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x1040168FB: _dispatch_client_callout (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x1040168B8: dispatch_once_f (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104018A90: _dispatch_kq_update (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x10401A0CD: _dispatch_kevent_resume (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x10401A03D: _dispatch_source_kevent_resume (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104019E85: _dispatch_source_kevent_register (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x104029651: _dispatch_queue_resume_finalize_activation (in
/usr/lib/system/libdispatch.dylib)
==57909==    by 0x105AE43C0: _notify_lib_init (in
/usr/lib/system/libsystem_notify.dylib)
==57909==    by 0x105AE49AB: notify_register_dispatch (in
/usr/lib/system/libsystem_notify.dylib)
==57909==    by 0x1049FE916: CFUniCharMapTo (in
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation)
==57909==    by 0x1040168FB: _dispatch_client_callout (in
/usr/lib/system/libdispatch.dylib)
==57909== 
==57909== Events    : Ir
==57909== Collected : 203711568
==57909== 
==57909== I   refs:      203,711,568
The program has unexpectedly finished.
** Process crashed **

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to