google / libprotobuf-mutator

Library for structured fuzzing with protobuffers
Apache License 2.0
579 stars 116 forks source link

How can I start with macos???? #226

Open Picasso-r opened 1 year ago

Picasso-r commented 1 year ago

I really need to perform it on macos, but I'm trouble with installing it.

vitalybuka commented 1 year ago

Do you have libFuzzer on MacOS?

Picasso-r commented 1 year ago

Yes, I have libFuzzer. I just want to do these:

sudo apt-get update
sudo apt-get install protobuf-compiler libprotobuf-dev binutils cmake \
  ninja-build liblzma-dev libz-dev pkg-config autoconf libtool

However, it seems that homebrew doesn't have those packages .

Picasso-r commented 1 year ago

By the way, does it also work with AFL++? I am a complete beginner in this area.

Picasso-r commented 1 year ago

I have tried many ways and used homebrew to install lots of dependencies, but when it comes to

ninja

I failed on everything, just like this:

[1/15] Building CXX object src/CMakeFiles/protobuf-mutator.dir/text_format.cc.o
FAILED: src/CMakeFiles/protobuf-mutator.dir/text_format.cc.o 
/usr/bin/clang++  -I/usr/local/include -I/Users/wujiesong3/Desktop/libprotobuf-mutator -I/Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include -I/Users/wujiesong3/Desktop/libprotobuf-mutator/build -I/Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.googletest/include -fno-exceptions -Werror -Wall -Wstring-conversion -g -std=c++14 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk  -fsanitize-coverage=0 -MD -MT src/CMakeFiles/protobuf-mutator.dir/text_format.cc.o -MF src/CMakeFiles/protobuf-mutator.dir/text_format.cc.o.d -o src/CMakeFiles/protobuf-mutator.dir/text_format.cc.o -c /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:78:
In file included from /usr/local/include/absl/container/inlined_vector.h:53:
In file included from /usr/local/include/absl/container/internal/inlined_vector.h:30:
In file included from /usr/local/include/absl/container/internal/compressed_tuple.h:40:
/usr/local/include/absl/utility/utility.h:164:12: error: no member named 'in_place_t' in namespace 'std'
using std::in_place_t;
      ~~~~~^
/usr/local/include/absl/utility/utility.h:165:12: error: no member named 'in_place' in namespace 'std'
using std::in_place;
      ~~~~~^
/usr/local/include/absl/utility/utility.h:181:12: error: no member named 'in_place_type' in namespace 'std'
using std::in_place_type;
      ~~~~~^
/usr/local/include/absl/utility/utility.h:182:12: error: no member named 'in_place_type_t' in namespace 'std'
using std::in_place_type_t;
      ~~~~~^
/usr/local/include/absl/utility/utility.h:198:12: error: no member named 'in_place_index' in namespace 'std'
using std::in_place_index;
      ~~~~~^
/usr/local/include/absl/utility/utility.h:199:12: error: no member named 'in_place_index_t' in namespace 'std'
using std::in_place_index_t;
      ~~~~~^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:78:
In file included from /usr/local/include/absl/container/inlined_vector.h:53:
In file included from /usr/local/include/absl/container/internal/inlined_vector.h:30:
/usr/local/include/absl/container/internal/compressed_tuple.h:89:36: error: no type named 'in_place_t' in namespace 'absl'
  explicit constexpr Storage(absl::in_place_t, V&& v)
                             ~~~~~~^
/usr/local/include/absl/container/internal/compressed_tuple.h:102:36: error: no type named 'in_place_t' in namespace 'absl'
  explicit constexpr Storage(absl::in_place_t, V&& v)
                             ~~~~~~^
/usr/local/include/absl/container/internal/compressed_tuple.h:125:48: error: no type named 'in_place_t' in namespace 'absl'
  explicit constexpr CompressedTupleImpl(absl::in_place_t, Vs&&... args)
                                         ~~~~~~^
/usr/local/include/absl/container/internal/compressed_tuple.h:126:24: error: no member named 'in_place' in namespace 'absl'; did you mean 'isspace'?
      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
                       ^~~~~~~~~~~~~~
                       isspace
/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/_ctype.h:267:1: note: 'isspace' declared here
isspace(int _c)
^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:78:
In file included from /usr/local/include/absl/container/inlined_vector.h:53:
In file included from /usr/local/include/absl/container/internal/inlined_vector.h:30:
/usr/local/include/absl/container/internal/compressed_tuple.h:137:48: error: no type named 'in_place_t' in namespace 'absl'
  explicit constexpr CompressedTupleImpl(absl::in_place_t, Vs&&... args)
                                         ~~~~~~^
/usr/local/include/absl/container/internal/compressed_tuple.h:138:31: error: no member named 'in_place' in namespace 'absl'; did you mean 'isspace'?
      : Storage<Ts, I, false>(absl::in_place, absl::forward<Vs>(args))... {}
                              ^~~~~~~~~~~~~~
                              isspace
/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/_ctype.h:267:1: note: 'isspace' declared here
isspace(int _c)
^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:78:
In file included from /usr/local/include/absl/container/inlined_vector.h:53:
In file included from /usr/local/include/absl/container/internal/inlined_vector.h:30:
/usr/local/include/absl/container/internal/compressed_tuple.h:224:46: error: no member named 'in_place' in namespace 'absl'; did you mean 'isspace'?
      : CompressedTuple::CompressedTupleImpl(absl::in_place, base...) {}
                                             ^~~~~~~~~~~~~~
                                             isspace
/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/_ctype.h:267:1: note: 'isspace' declared here
isspace(int _c)
^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:78:
In file included from /usr/local/include/absl/container/inlined_vector.h:53:
In file included from /usr/local/include/absl/container/internal/inlined_vector.h:30:
/usr/local/include/absl/container/internal/compressed_tuple.h:236:46: error: no member named 'in_place' in namespace 'absl'; did you mean 'isspace'?
      : CompressedTuple::CompressedTupleImpl(absl::in_place,
                                             ^~~~~~~~~~~~~~
                                             isspace
/Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/include/_ctype.h:267:1: note: 'isspace' declared here
isspace(int _c)
^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:79:
In file included from /usr/local/include/absl/crc/internal/crc_cord_state.h:23:
/usr/local/include/absl/crc/crc32c.h:184:35: error: 'FormatSpecTemplate' is unavailable: Format string is not constexpr.
  return os << absl::StreamFormat("%08x", static_cast<uint32_t>(crc));
                                  ^
/usr/local/include/absl/strings/internal/str_format/bind.h:128:3: note: 'FormatSpecTemplate' has been explicitly marked unavailable here
  FormatSpecTemplate(...)  // NOLINT
  ^
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.cc:15:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/src/text_format.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/port/protobuf.h:20:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/any.pb.h:24:
In file included from /Users/wujiesong3/Desktop/libprotobuf-mutator/build/external.protobuf/include/google/protobuf/io/coded_stream.h:134:
In file included from /usr/local/include/absl/strings/cord.h:80:
In file included from /usr/local/include/absl/functional/function_ref.h:54:
In file included from /usr/local/include/absl/functional/internal/function_ref.h:23:
In file included from /usr/local/include/absl/functional/any_invocable.h:42:
/usr/local/include/absl/functional/internal/any_invocable.h:380:28: error: no member named 'in_place_type_t' in namespace 'absl'
struct IsInPlaceType<absl::in_place_type_t<T>> : std::true_type {};
                     ~~~~~~^
/usr/local/include/absl/functional/internal/any_invocable.h:380:44: error: 'T' does not refer to a value
struct IsInPlaceType<absl::in_place_type_t<T>> : std::true_type {};
                                           ^
/usr/local/include/absl/functional/internal/any_invocable.h:379:17: note: declared here
template <class T>
                ^
/usr/local/include/absl/functional/internal/any_invocable.h:380:46: error: expected unqualified-id
struct IsInPlaceType<absl::in_place_type_t<T>> : std::true_type {};
                                             ^
/usr/local/include/absl/functional/internal/any_invocable.h:476:27: error: no template named 'in_place_type_t' in namespace 'absl'
  explicit CoreImpl(absl::in_place_type_t<QualTRef>, Args&&... args) {
                    ~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

The version of my clang++ is:

➜  build git:(master) ✗ clang++ --version
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: x86_64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

and the verison of abseil of mine should be the newest. Do I need to download the older version of this repo?

Picasso-r commented 1 year ago

I modify the compile option -std=c++14 to -std=c++17, which solves the problem. But I encounter a new one. After change the -Xliner --start-group into -force_load as it doesn't match macos, I get many errors, and a short glimpse is like this:

➜  build git:(master) ✗ ninja
[1/2] Linking CXX executable src/mutator_test
FAILED: src/mutator_test 
: && /usr/local/opt/llvm/bin/clang++ -fno-exceptions -Werror -Wall -Wstring-conversion -g -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib src/CMakeFiles/mutator_test.dir/mutator_test.cc.o src/CMakeFiles/mutator_test.dir/utf8_fix_test.cc.o src/CMakeFiles/mutator_test.dir/weighted_reservoir_sampler_test.cc.o -o src/mutator_test  src/libprotobuf-mutator.a  src/libmutator-test-proto.a  /Library/Developer/CommandLineTools/SDKs/MacOSX13.3.sdk/usr/lib/libz.tbd  external.googletest/lib/libgtest.a  external.googletest/lib/libgmock.a  external.googletest/lib/libgtest_main.a  -force_load  external.protobuf/lib/libprotobufd.a  external.protobuf/lib/libabsl_bad_any_cast_impl.a  external.protobuf/lib/libabsl_bad_optional_access.a  external.protobuf/lib/libabsl_bad_variant_access.a  external.protobuf/lib/libabsl_base.a  external.protobuf/lib/libabsl_city.a  external.protobuf/lib/libabsl_civil_time.a  external.protobuf/lib/libabsl_cord.a  external.protobuf/lib/libabsl_cord_internal.a  external.protobuf/lib/libabsl_cordz_functions.a  external.protobuf/lib/libabsl_cordz_handle.a  external.protobuf/lib/libabsl_cordz_info.a  external.protobuf/lib/libabsl_cordz_sample_token.a  external.protobuf/lib/libabsl_crc_cord_state.a  external.protobuf/lib/libabsl_crc_cpu_detect.a  external.protobuf/lib/libabsl_crc_internal.a  external.protobuf/lib/libabsl_crc32c.a  external.protobuf/lib/libabsl_debugging_internal.a  external.protobuf/lib/libabsl_demangle_internal.a  external.protobuf/lib/libabsl_die_if_null.a  external.protobuf/lib/libabsl_examine_stack.a  external.protobuf/lib/libabsl_exponential_biased.a  external.protobuf/lib/libabsl_failure_signal_handler.a  external.protobuf/lib/libabsl_flags.a  external.protobuf/lib/libabsl_flags_commandlineflag.a  external.protobuf/lib/libabsl_flags_commandlineflag_internal.a  external.protobuf/lib/libabsl_flags_config.a  external.protobuf/lib/libabsl_flags_internal.a  external.protobuf/lib/libabsl_flags_marshalling.a  external.protobuf/lib/libabsl_flags_parse.a  external.protobuf/lib/libabsl_flags_private_handle_accessor.a  external.protobuf/lib/libabsl_flags_program_name.a  external.protobuf/lib/libabsl_flags_reflection.a  external.protobuf/lib/libabsl_flags_usage.a  external.protobuf/lib/libabsl_flags_usage_internal.a  external.protobuf/lib/libabsl_graphcycles_internal.a  external.protobuf/lib/libabsl_hash.a  external.protobuf/lib/libabsl_hashtablez_sampler.a  external.protobuf/lib/libabsl_int128.a  external.protobuf/lib/libabsl_leak_check.a  external.protobuf/lib/libabsl_log_entry.a  external.protobuf/lib/libabsl_log_flags.a  external.protobuf/lib/libabsl_log_globals.a  external.protobuf/lib/libabsl_log_initialize.a  external.protobuf/lib/libabsl_log_internal_check_op.a  external.protobuf/lib/libabsl_log_internal_conditions.a  external.protobuf/lib/libabsl_log_internal_format.a  external.protobuf/lib/libabsl_log_internal_globals.a  external.protobuf/lib/libabsl_log_internal_log_sink_set.a  external.protobuf/lib/libabsl_log_internal_message.a  external.protobuf/lib/libabsl_log_internal_nullguard.a  external.protobuf/lib/libabsl_log_internal_proto.a  external.protobuf/lib/libabsl_log_severity.a  external.protobuf/lib/libabsl_log_sink.a  external.protobuf/lib/libabsl_low_level_hash.a  external.protobuf/lib/libabsl_malloc_internal.a  external.protobuf/lib/libabsl_periodic_sampler.a  external.protobuf/lib/libabsl_random_distributions.a  external.protobuf/lib/libabsl_random_internal_distribution_test_util.a  external.protobuf/lib/libabsl_random_internal_platform.a  external.protobuf/lib/libabsl_random_internal_pool_urbg.a  external.protobuf/lib/libabsl_random_internal_randen.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes.a  external.protobuf/lib/libabsl_random_internal_randen_hwaes_impl.a  external.protobuf/lib/libabsl_random_internal_randen_slow.a  external.protobuf/lib/libabsl_random_internal_seed_material.a  external.protobuf/lib/libabsl_random_seed_gen_exception.a  external.protobuf/lib/libabsl_random_seed_sequences.a  external.protobuf/lib/libabsl_raw_hash_set.a  external.protobuf/lib/libabsl_raw_logging_internal.a  external.protobuf/lib/libabsl_scoped_set_env.a  external.protobuf/lib/libabsl_spinlock_wait.a  external.protobuf/lib/libabsl_stacktrace.a  external.protobuf/lib/libabsl_status.a  external.protobuf/lib/libabsl_statusor.a  external.protobuf/lib/libabsl_str_format_internal.a  external.protobuf/lib/libabsl_strerror.a  external.protobuf/lib/libabsl_strings.a  external.protobuf/lib/libabsl_strings_internal.a  external.protobuf/lib/libabsl_symbolize.a  external.protobuf/lib/libabsl_synchronization.a  external.protobuf/lib/libabsl_throw_delegate.a  external.protobuf/lib/libabsl_time.a  external.protobuf/lib/libabsl_time_zone.a  external.protobuf/lib/libutf8_validity.a   && :
ld: warning: ignoring file external.protobuf/lib/libabsl_flags.a, building for macOS-x86_64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture x86_64:
  "_AbslInternalSpinLockWake_lts_20230802", referenced from:
      absl::lts_20230802::base_internal::SpinLockWake(std::__1::atomic<unsigned int>*, bool) in libprotobuf-mutator.a(mutator.cc.o)
  "_CFRelease", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "_CFStringGetCString", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "_CFStringGetLength", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "_CFStringGetMaximumSizeForEncoding", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "_CFTimeZoneCopyDefault", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "_CFTimeZoneGetName", referenced from:
      absl::lts_20230125::time_internal::cctz::local_time_zone() in libabsl_time_zone.a(time_zone_lookup.cc.o)
  "absl::lts_20230802::log_internal::LogMessage::OstreamView::stream()", referenced from:
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto3.pb.cc.o)
  "absl::lts_20230802::log_internal::LogMessage::OstreamView::OstreamView(absl::lts_20230802::log_internal::LogMessage::LogMessageData&)", referenced from:
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto3.pb.cc.o)
  "absl::lts_20230802::log_internal::LogMessage::OstreamView::~OstreamView()", referenced from:
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<char const*, 0>(char const* const&) in libmutator-test-proto.a(mutator_test_proto3.pb.cc.o)
  "void absl::lts_20230802::log_internal::LogMessage::CopyToEncodedBuffer<(absl::lts_20230802::log_internal::LogMessage::StringType)0>(std::__1::basic_string_view<char, std::__1::char_traits<char>>)", referenced from:
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<48>(char const (&) [48]) in mutator_test.cc.o
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<59>(char const (&) [59]) in mutator_test.cc.o
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<19>(char const (&) [19]) in mutator_test.cc.o
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<19>(char const (&) [19]) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<48>(char const (&) [48]) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<59>(char const (&) [59]) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      absl::lts_20230802::log_internal::LogMessage& absl::lts_20230802::log_internal::LogMessage::operator<<<34>(char const (&) [34]) in libmutator-test-proto.a(mutator_test_proto2.pb.cc.o)
      ...

I think the problem lies on the architecture, I reeeeeally need some help.

SIIYIIX commented 9 months ago

I meet same problem,also macos... Have you solved it?