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

Crash for Firestore, iOS Simulator 14.3, Xcode 15 #11829

Closed
thomasdao opened this issue Sep 20, 2023 · 19 comments
Closed

Crash for Firestore, iOS Simulator 14.3, Xcode 15 #11829

thomasdao opened this issue Sep 20, 2023 · 19 comments

Comments

@thomasdao
Copy link

Description

On latest Xcode 15, iOS simulator 14.3, I found the app crashes almost immediately when app starts.
When run on iOS simulator 17.0, the app does not crash.
When run on Xcode 14.2, the app does not crash.

Reproducing the issue

Compile app on Xcode 15 and run on simulator 14.3

Firebase SDK Version

10.15.0

Xcode Version

15

Installation Method

CocoaPods

Firebase Product(s)

Firestore

Targeted Platforms

iOS

Relevant Log Output

* thread #12, queue = 'com.google.firebase.firestore', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
    frame #0: 0x0000000000000000
  * frame #1: 0x000000010458589c grpc`std::__1::pair<grpc_core::ChannelInit::Builder::Slot*, long> std::__1::get_temporary_buffer[abi:v160006]<grpc_core::ChannelInit::Builder::Slot>(__n=2) at temporary_buffer.h:57:39
    frame #2: 0x00000001045856d4 grpc`void std::__1::__stable_sort_impl[abi:v160006]<std::__1::_ClassicAlgPolicy, std::__1::__wrap_iter<grpc_core::ChannelInit::Builder::Slot*>, grpc_core::ChannelInit::Builder::Build()::$_0>(__first=__wrap_iter<grpc_core::ChannelInit::Builder::Slot *> @ 0x000000016fc6da38, __last=__wrap_iter<grpc_core::ChannelInit::Builder::Slot *> @ 0x000000016fc6da30, __comp=0x000000016fc6da6f) at stable_sort.h:225:15
    frame #3: 0x0000000104582eac grpc`void std::__1::stable_sort[abi:v160006]<std::__1::__wrap_iter<grpc_core::ChannelInit::Builder::Slot*>, grpc_core::ChannelInit::Builder::Build()::$_0>(__first=__wrap_iter<grpc_core::ChannelInit::Builder::Slot *> @ 0x000000016fc6da78, __last=__wrap_iter<grpc_core::ChannelInit::Builder::Slot *> @ 0x000000016fc6da70, __comp=(unnamed class) @ 0x000000016fc6da6f) at stable_sort.h:236:3
    frame #4: 0x0000000104582d40 grpc`grpc_core::ChannelInit::Builder::Build(this=0x000000016fc6dcb8) at channel_init.cc:36:5
    frame #5: 0x0000000104661338 grpc`grpc_core::CoreConfiguration::CoreConfiguration(this=0x00000001392e6de0, builder=0x000000016fc6dca0) at core_configuration.cc:42:44
    frame #6: 0x00000001046612ec grpc`grpc_core::CoreConfiguration::CoreConfiguration(this=0x00000001392e6de0, builder=0x000000016fc6dca0) at core_configuration.cc:50:60
    frame #7: 0x0000000104661290 grpc`grpc_core::CoreConfiguration::Builder::Build(this=0x000000016fc6dca0) at core_configuration.cc:36:14
    frame #8: 0x0000000104661a40 grpc`grpc_core::CoreConfiguration::BuildNewAndMaybeSet() at core_configuration.cc:87:34
    frame #9: 0x000000010453dc50 grpc`grpc_core::CoreConfiguration::Get() at core_configuration.h:151:12
    frame #10: 0x00000001045adb5c grpc`grpc_channel_create(target="firestore.googleapis.com", creds=0x0000600002eee350, c_args=0x000000016fc6e078) at chttp2_connector.cc:357:33
    frame #11: 0x0000000106491254 grpcpp`grpc::SecureChannelCredentials::CreateChannelWithInterceptors(this=0x0000600000d7aa00, target="firestore.googleapis.com", args=0x000000016fc6e358, interceptor_creators=size=0) at secure_credentials.cc:83:7
    frame #12: 0x00000001064911b8 grpcpp`grpc::SecureChannelCredentials::CreateChannelImpl(this=0x0000600000d7aa00, target="firestore.googleapis.com", args=0x000000016fc6e358) at secure_credentials.cc:67:10
    frame #13: 0x0000000106456c0c grpcpp`grpc::CreateCustomChannel(target="firestore.googleapis.com", creds=std::__1::shared_ptr<grpc::ChannelCredentials>::element_type @ 0x0000600000d7aa00 strong=1 weak=1, args=0x000000016fc6e358) at create_channel.cc:49:25
    frame #14: 0x0000000101d67088 FirebaseFirestore`firebase::firestore::remote::GrpcConnection::CreateChannel(this=0x00000001392e48c8) const at grpc_connection.cc:312:12
    frame #15: 0x0000000101d66f0c FirebaseFirestore`firebase::firestore::remote::GrpcConnection::EnsureActiveStub(this=0x00000001392e48c8) at grpc_connection.cc:295:21
    frame #16: 0x0000000101d67894 FirebaseFirestore`firebase::firestore::remote::GrpcConnection::CreateStream(this=0x00000001392e48c8, rpc_name=(ptr_ = "/google.firestore.v1.Firestore/Listen", length_ = 37), auth_token=0x0000600002382aa0, app_check_token="", observer=0x00000001386dc1d8) at grpc_connection.cc:341:3
    frame #17: 0x000000010200542c FirebaseFirestore`firebase::firestore::remote::WatchStream::CreateGrpcStream(this=0x00000001386dc1d8, grpc_connection=0x00000001392e48c8, auth_token=0x0000600002382aa0, app_check_token="") at watch_stream.cc:83:27
    frame #18: 0x0000000101f7d8c4 FirebaseFirestore`firebase::firestore::remote::Stream::ResumeStartWithCredentials(this=0x00000001386dc1d8, auth_token=0x0000600002382a98, app_check_token="") at stream.cc:179:18
    frame #19: 0x0000000101f83770 FirebaseFirestore`firebase::firestore::remote::Stream::RequestCredentials(this=0x0000600002382a88)::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()::operator()() const at stream.cc:154:24
    frame #20: 0x0000000101f836e8 FirebaseFirestore`decltype(std::declval<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()&>()()) std::__1::__invoke[abi:v160006]<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()&>(__f=0x0000600002382a88) at invoke.h:394:23
    frame #21: 0x0000000101f836a0 FirebaseFirestore`void std::__1::__invoke_void_return_wrapper<void, true>::__call<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()&>(__args=0x0000600002382a88) at invoke.h:487:9
    frame #22: 0x0000000101f8367c FirebaseFirestore`std::__1::__function::__alloc_func<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'(), std::__1::allocator<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()>, void ()>::operator()[abi:v160006](this=0x0000600002382a88) at function.h:185:16
    frame #23: 0x0000000101f82358 FirebaseFirestore`std::__1::__function::__func<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'(), std::__1::allocator<firebase::firestore::remote::Stream::RequestCredentials()::$_0::operator()(absl::lts_20220623::optional<firebase::firestore::util::StatusOr<firebase::firestore::credentials::AuthToken>> const&, absl::lts_20220623::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>> const&) const::'lambda'()>, void ()>::operator()(this=0x0000600002382a80) at function.h:356:12
    frame #24: 0x0000000101b893a4 FirebaseFirestore`std::__1::__function::__value_func<void ()>::operator()[abi:v160006](this=0x00006000002d4040) const at function.h:510:16
    frame #25: 0x0000000101b86a94 FirebaseFirestore`std::__1::function<void ()>::operator()(this= Lambda in File stream.cc at Line 146) const at function.h:1156:12
    frame #26: 0x0000000101b86a54 FirebaseFirestore`firebase::firestore::util::AsyncQueue::ExecuteBlocking(this=0x00006000023b2680, operation= Lambda in File stream.cc at Line 146) at async_queue.cc:89:3
    frame #27: 0x0000000101b8b580 FirebaseFirestore`firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0::operator()(this=0x00006000002d4038) const at async_queue.cc:144:36
    frame #28: 0x0000000101b8b554 FirebaseFirestore`decltype(std::declval<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0&>()()) std::__1::__invoke[abi:v160006]<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0&>(__f=0x00006000002d4038) at invoke.h:394:23
    frame #29: 0x0000000101b8b50c FirebaseFirestore`void std::__1::__invoke_void_return_wrapper<void, true>::__call<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0&>(__args=0x00006000002d4038) at invoke.h:487:9
    frame #30: 0x0000000101b8b4e8 FirebaseFirestore`std::__1::__function::__alloc_func<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0, std::__1::allocator<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0>, void ()>::operator()[abi:v160006](this=0x00006000002d4038) at function.h:185:16
    frame #31: 0x0000000101b8a27c FirebaseFirestore`std::__1::__function::__func<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0, std::__1::allocator<firebase::firestore::util::AsyncQueue::Wrap(std::__1::function<void ()> const&)::$_0>, void ()>::operator()(this=0x00006000002d4030) at function.h:356:12
    frame #32: 0x0000000101b893a4 FirebaseFirestore`std::__1::__function::__value_func<void ()>::operator()[abi:v160006](this=0x00006000038ad7e0) const at function.h:510:16
    frame #33: 0x0000000101b86a94 FirebaseFirestore`std::__1::function<void ()>::operator()(this= Lambda in File async_queue.cc at Line 144) const at function.h:1156:12
    frame #34: 0x0000000101fc51f8 FirebaseFirestore`firebase::firestore::util::Task::ExecuteAndRelease(this=0x00006000038ad740) at task.cc:102:9
    frame #35: 0x0000000101c70fc0 FirebaseFirestore`firebase::firestore::util::ExecutorLibdispatch::InvokeAsync(raw_task=0x00006000038ad740) at executor_libdispatch.mm:237:9
    frame #36: 0x0000000106ff4f34 libdispatch.dylib`_dispatch_client_callout + 16
    frame #37: 0x0000000106ffbfbc libdispatch.dylib`_dispatch_lane_serial_drain + 720
    frame #38: 0x0000000106ffcc70 libdispatch.dylib`_dispatch_lane_invoke + 440
    frame #39: 0x0000000107008af4 libdispatch.dylib`_dispatch_workloop_worker_thread + 1636
    frame #40: 0x00000001bd322878 libsystem_pthread.dylib`_pthread_wqthread + 284

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet
Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet
PODS:
  - abseil/algorithm (1.20220623.0):
    - abseil/algorithm/algorithm (= 1.20220623.0)
    - abseil/algorithm/container (= 1.20220623.0)
  - abseil/algorithm/algorithm (1.20220623.0):
    - abseil/base/config
  - abseil/algorithm/container (1.20220623.0):
    - abseil/algorithm/algorithm
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/base (1.20220623.0):
    - abseil/base/atomic_hook (= 1.20220623.0)
    - abseil/base/base (= 1.20220623.0)
    - abseil/base/base_internal (= 1.20220623.0)
    - abseil/base/config (= 1.20220623.0)
    - abseil/base/core_headers (= 1.20220623.0)
    - abseil/base/dynamic_annotations (= 1.20220623.0)
    - abseil/base/endian (= 1.20220623.0)
    - abseil/base/errno_saver (= 1.20220623.0)
    - abseil/base/fast_type_id (= 1.20220623.0)
    - abseil/base/log_severity (= 1.20220623.0)
    - abseil/base/malloc_internal (= 1.20220623.0)
    - abseil/base/prefetch (= 1.20220623.0)
    - abseil/base/pretty_function (= 1.20220623.0)
    - abseil/base/raw_logging_internal (= 1.20220623.0)
    - abseil/base/spinlock_wait (= 1.20220623.0)
    - abseil/base/strerror (= 1.20220623.0)
    - abseil/base/throw_delegate (= 1.20220623.0)
  - abseil/base/atomic_hook (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/base/base (1.20220623.0):
    - abseil/base/atomic_hook
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/log_severity
    - abseil/base/raw_logging_internal
    - abseil/base/spinlock_wait
    - abseil/meta/type_traits
  - abseil/base/base_internal (1.20220623.0):
    - abseil/base/config
    - abseil/meta/type_traits
  - abseil/base/config (1.20220623.0)
  - abseil/base/core_headers (1.20220623.0):
    - abseil/base/config
  - abseil/base/dynamic_annotations (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/base/endian (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/base/errno_saver (1.20220623.0):
    - abseil/base/config
  - abseil/base/fast_type_id (1.20220623.0):
    - abseil/base/config
  - abseil/base/log_severity (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/base/malloc_internal (1.20220623.0):
    - abseil/base/base
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/raw_logging_internal
  - abseil/base/prefetch (1.20220623.0):
    - abseil/base/config
  - abseil/base/pretty_function (1.20220623.0)
  - abseil/base/raw_logging_internal (1.20220623.0):
    - abseil/base/atomic_hook
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/errno_saver
    - abseil/base/log_severity
  - abseil/base/spinlock_wait (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/core_headers
    - abseil/base/errno_saver
  - abseil/base/strerror (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/errno_saver
  - abseil/base/throw_delegate (1.20220623.0):
    - abseil/base/config
    - abseil/base/raw_logging_internal
  - abseil/cleanup/cleanup (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/cleanup/cleanup_internal
  - abseil/cleanup/cleanup_internal (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/core_headers
    - abseil/utility/utility
  - abseil/container/common (1.20220623.0):
    - abseil/meta/type_traits
    - abseil/types/optional
  - abseil/container/compressed_tuple (1.20220623.0):
    - abseil/utility/utility
  - abseil/container/container_memory (1.20220623.0):
    - abseil/base/config
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/utility/utility
  - abseil/container/fixed_array (1.20220623.0):
    - abseil/algorithm/algorithm
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/throw_delegate
    - abseil/container/compressed_tuple
    - abseil/memory/memory
  - abseil/container/flat_hash_map (1.20220623.0):
    - abseil/algorithm/container
    - abseil/base/core_headers
    - abseil/container/container_memory
    - abseil/container/hash_function_defaults
    - abseil/container/raw_hash_map
    - abseil/memory/memory
  - abseil/container/flat_hash_set (1.20220623.0):
    - abseil/algorithm/container
    - abseil/base/core_headers
    - abseil/container/container_memory
    - abseil/container/hash_function_defaults
    - abseil/container/raw_hash_set
    - abseil/memory/memory
  - abseil/container/hash_function_defaults (1.20220623.0):
    - abseil/base/config
    - abseil/hash/hash
    - abseil/strings/cord
    - abseil/strings/strings
  - abseil/container/hash_policy_traits (1.20220623.0):
    - abseil/meta/type_traits
  - abseil/container/hashtable_debug_hooks (1.20220623.0):
    - abseil/base/config
  - abseil/container/hashtablez_sampler (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/debugging/stacktrace
    - abseil/memory/memory
    - abseil/profiling/exponential_biased
    - abseil/profiling/sample_recorder
    - abseil/synchronization/synchronization
    - abseil/utility/utility
  - abseil/container/inlined_vector (1.20220623.0):
    - abseil/algorithm/algorithm
    - abseil/base/core_headers
    - abseil/base/throw_delegate
    - abseil/container/inlined_vector_internal
    - abseil/memory/memory
  - abseil/container/inlined_vector_internal (1.20220623.0):
    - abseil/base/core_headers
    - abseil/container/compressed_tuple
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/types/span
  - abseil/container/layout (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/strings/strings
    - abseil/types/span
    - abseil/utility/utility
  - abseil/container/raw_hash_map (1.20220623.0):
    - abseil/base/throw_delegate
    - abseil/container/container_memory
    - abseil/container/raw_hash_set
  - abseil/container/raw_hash_set (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/prefetch
    - abseil/container/common
    - abseil/container/compressed_tuple
    - abseil/container/container_memory
    - abseil/container/hash_policy_traits
    - abseil/container/hashtable_debug_hooks
    - abseil/container/hashtablez_sampler
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/utility/utility
  - abseil/debugging/debugging_internal (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/errno_saver
    - abseil/base/raw_logging_internal
  - abseil/debugging/demangle_internal (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/debugging/stacktrace (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/debugging/debugging_internal
  - abseil/debugging/symbolize (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/malloc_internal
    - abseil/base/raw_logging_internal
    - abseil/debugging/debugging_internal
    - abseil/debugging/demangle_internal
    - abseil/strings/strings
  - abseil/functional/any_invocable (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/utility/utility
  - abseil/functional/bind_front (1.20220623.0):
    - abseil/base/base_internal
    - abseil/container/compressed_tuple
    - abseil/meta/type_traits
    - abseil/utility/utility
  - abseil/functional/function_ref (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/hash/city (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
  - abseil/hash/hash (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/container/fixed_array
    - abseil/functional/function_ref
    - abseil/hash/city
    - abseil/hash/low_level_hash
    - abseil/meta/type_traits
    - abseil/numeric/int128
    - abseil/strings/strings
    - abseil/types/optional
    - abseil/types/variant
    - abseil/utility/utility
  - abseil/hash/low_level_hash (1.20220623.0):
    - abseil/base/config
    - abseil/base/endian
    - abseil/numeric/bits
    - abseil/numeric/int128
  - abseil/memory (1.20220623.0):
    - abseil/memory/memory (= 1.20220623.0)
  - abseil/memory/memory (1.20220623.0):
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/meta (1.20220623.0):
    - abseil/meta/type_traits (= 1.20220623.0)
  - abseil/meta/type_traits (1.20220623.0):
    - abseil/base/config
  - abseil/numeric/bits (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/numeric/int128 (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/numeric/bits
  - abseil/numeric/representation (1.20220623.0):
    - abseil/base/config
  - abseil/profiling/exponential_biased (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
  - abseil/profiling/sample_recorder (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/synchronization/synchronization
    - abseil/time/time
  - abseil/random/distributions (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/random/internal/distribution_caller
    - abseil/random/internal/fast_uniform_bits
    - abseil/random/internal/fastmath
    - abseil/random/internal/generate_real
    - abseil/random/internal/iostream_state_saver
    - abseil/random/internal/traits
    - abseil/random/internal/uniform_helper
    - abseil/random/internal/wide_multiply
    - abseil/strings/strings
  - abseil/random/internal/distribution_caller (1.20220623.0):
    - abseil/base/config
    - abseil/base/fast_type_id
    - abseil/utility/utility
  - abseil/random/internal/fast_uniform_bits (1.20220623.0):
    - abseil/base/config
    - abseil/meta/type_traits
    - abseil/random/internal/traits
  - abseil/random/internal/fastmath (1.20220623.0):
    - abseil/numeric/bits
  - abseil/random/internal/generate_real (1.20220623.0):
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/random/internal/fastmath
    - abseil/random/internal/traits
  - abseil/random/internal/iostream_state_saver (1.20220623.0):
    - abseil/meta/type_traits
    - abseil/numeric/int128
  - abseil/random/internal/nonsecure_base (1.20220623.0):
    - abseil/base/core_headers
    - abseil/container/inlined_vector
    - abseil/meta/type_traits
    - abseil/random/internal/pool_urbg
    - abseil/random/internal/salted_seed_seq
    - abseil/random/internal/seed_material
    - abseil/types/span
  - abseil/random/internal/pcg_engine (1.20220623.0):
    - abseil/base/config
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/numeric/int128
    - abseil/random/internal/fastmath
    - abseil/random/internal/iostream_state_saver
  - abseil/random/internal/platform (1.20220623.0):
    - abseil/base/config
  - abseil/random/internal/pool_urbg (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/raw_logging_internal
    - abseil/random/internal/randen
    - abseil/random/internal/seed_material
    - abseil/random/internal/traits
    - abseil/random/seed_gen_exception
    - abseil/types/span
  - abseil/random/internal/randen (1.20220623.0):
    - abseil/base/raw_logging_internal
    - abseil/random/internal/platform
    - abseil/random/internal/randen_hwaes
    - abseil/random/internal/randen_slow
  - abseil/random/internal/randen_engine (1.20220623.0):
    - abseil/base/endian
    - abseil/meta/type_traits
    - abseil/random/internal/iostream_state_saver
    - abseil/random/internal/randen
  - abseil/random/internal/randen_hwaes (1.20220623.0):
    - abseil/base/config
    - abseil/random/internal/platform
    - abseil/random/internal/randen_hwaes_impl
  - abseil/random/internal/randen_hwaes_impl (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/numeric/int128
    - abseil/random/internal/platform
  - abseil/random/internal/randen_slow (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/numeric/int128
    - abseil/random/internal/platform
  - abseil/random/internal/salted_seed_seq (1.20220623.0):
    - abseil/container/inlined_vector
    - abseil/meta/type_traits
    - abseil/random/internal/seed_material
    - abseil/types/optional
    - abseil/types/span
  - abseil/random/internal/seed_material (1.20220623.0):
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/raw_logging_internal
    - abseil/random/internal/fast_uniform_bits
    - abseil/strings/strings
    - abseil/types/optional
    - abseil/types/span
  - abseil/random/internal/traits (1.20220623.0):
    - abseil/base/config
    - abseil/numeric/bits
    - abseil/numeric/int128
  - abseil/random/internal/uniform_helper (1.20220623.0):
    - abseil/base/config
    - abseil/meta/type_traits
    - abseil/numeric/int128
    - abseil/random/internal/traits
  - abseil/random/internal/wide_multiply (1.20220623.0):
    - abseil/base/config
    - abseil/numeric/bits
    - abseil/numeric/int128
    - abseil/random/internal/traits
  - abseil/random/random (1.20220623.0):
    - abseil/random/distributions
    - abseil/random/internal/nonsecure_base
    - abseil/random/internal/pcg_engine
    - abseil/random/internal/pool_urbg
    - abseil/random/internal/randen_engine
    - abseil/random/seed_sequences
  - abseil/random/seed_gen_exception (1.20220623.0):
    - abseil/base/config
  - abseil/random/seed_sequences (1.20220623.0):
    - abseil/base/config
    - abseil/random/internal/pool_urbg
    - abseil/random/internal/salted_seed_seq
    - abseil/random/internal/seed_material
    - abseil/random/seed_gen_exception
    - abseil/types/span
  - abseil/status/status (1.20220623.0):
    - abseil/base/atomic_hook
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/base/strerror
    - abseil/container/inlined_vector
    - abseil/debugging/stacktrace
    - abseil/debugging/symbolize
    - abseil/functional/function_ref
    - abseil/strings/cord
    - abseil/strings/str_format
    - abseil/strings/strings
    - abseil/types/optional
  - abseil/status/statusor (1.20220623.0):
    - abseil/base/base
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/meta/type_traits
    - abseil/status/status
    - abseil/strings/strings
    - abseil/types/variant
    - abseil/utility/utility
  - abseil/strings/cord (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/raw_logging_internal
    - abseil/container/fixed_array
    - abseil/container/inlined_vector
    - abseil/functional/function_ref
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/strings/cord_internal
    - abseil/strings/cordz_functions
    - abseil/strings/cordz_info
    - abseil/strings/cordz_statistics
    - abseil/strings/cordz_update_scope
    - abseil/strings/cordz_update_tracker
    - abseil/strings/internal
    - abseil/strings/str_format
    - abseil/strings/strings
    - abseil/types/optional
    - abseil/types/span
  - abseil/strings/cord_internal (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/raw_logging_internal
    - abseil/base/throw_delegate
    - abseil/container/compressed_tuple
    - abseil/container/inlined_vector
    - abseil/container/layout
    - abseil/functional/function_ref
    - abseil/meta/type_traits
    - abseil/strings/strings
    - abseil/types/span
  - abseil/strings/cordz_functions (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/profiling/exponential_biased
  - abseil/strings/cordz_handle (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/raw_logging_internal
    - abseil/synchronization/synchronization
  - abseil/strings/cordz_info (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/container/inlined_vector
    - abseil/debugging/stacktrace
    - abseil/strings/cord_internal
    - abseil/strings/cordz_functions
    - abseil/strings/cordz_handle
    - abseil/strings/cordz_statistics
    - abseil/strings/cordz_update_tracker
    - abseil/synchronization/synchronization
    - abseil/types/span
  - abseil/strings/cordz_statistics (1.20220623.0):
    - abseil/base/config
    - abseil/strings/cordz_update_tracker
  - abseil/strings/cordz_update_scope (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/strings/cord_internal
    - abseil/strings/cordz_info
    - abseil/strings/cordz_update_tracker
  - abseil/strings/cordz_update_tracker (1.20220623.0):
    - abseil/base/config
  - abseil/strings/internal (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/raw_logging_internal
    - abseil/meta/type_traits
  - abseil/strings/str_format (1.20220623.0):
    - abseil/strings/str_format_internal
  - abseil/strings/str_format_internal (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/functional/function_ref
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/numeric/int128
    - abseil/numeric/representation
    - abseil/strings/strings
    - abseil/types/optional
    - abseil/types/span
    - abseil/utility/utility
  - abseil/strings/strings (1.20220623.0):
    - abseil/base/base
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/endian
    - abseil/base/raw_logging_internal
    - abseil/base/throw_delegate
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/numeric/bits
    - abseil/numeric/int128
    - abseil/strings/internal
  - abseil/synchronization/graphcycles_internal (1.20220623.0):
    - abseil/base/base
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/malloc_internal
    - abseil/base/raw_logging_internal
  - abseil/synchronization/kernel_timeout_internal (1.20220623.0):
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/time/time
  - abseil/synchronization/synchronization (1.20220623.0):
    - abseil/base/atomic_hook
    - abseil/base/base
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/dynamic_annotations
    - abseil/base/malloc_internal
    - abseil/base/raw_logging_internal
    - abseil/debugging/stacktrace
    - abseil/debugging/symbolize
    - abseil/synchronization/graphcycles_internal
    - abseil/synchronization/kernel_timeout_internal
    - abseil/time/time
  - abseil/time (1.20220623.0):
    - abseil/time/internal (= 1.20220623.0)
    - abseil/time/time (= 1.20220623.0)
  - abseil/time/internal (1.20220623.0):
    - abseil/time/internal/cctz (= 1.20220623.0)
  - abseil/time/internal/cctz (1.20220623.0):
    - abseil/time/internal/cctz/civil_time (= 1.20220623.0)
    - abseil/time/internal/cctz/time_zone (= 1.20220623.0)
  - abseil/time/internal/cctz/civil_time (1.20220623.0):
    - abseil/base/config
  - abseil/time/internal/cctz/time_zone (1.20220623.0):
    - abseil/base/config
    - abseil/time/internal/cctz/civil_time
  - abseil/time/time (1.20220623.0):
    - abseil/base/base
    - abseil/base/core_headers
    - abseil/base/raw_logging_internal
    - abseil/numeric/int128
    - abseil/strings/strings
    - abseil/time/internal/cctz/civil_time
    - abseil/time/internal/cctz/time_zone
  - abseil/types (1.20220623.0):
    - abseil/types/any (= 1.20220623.0)
    - abseil/types/bad_any_cast (= 1.20220623.0)
    - abseil/types/bad_any_cast_impl (= 1.20220623.0)
    - abseil/types/bad_optional_access (= 1.20220623.0)
    - abseil/types/bad_variant_access (= 1.20220623.0)
    - abseil/types/compare (= 1.20220623.0)
    - abseil/types/optional (= 1.20220623.0)
    - abseil/types/span (= 1.20220623.0)
    - abseil/types/variant (= 1.20220623.0)
  - abseil/types/any (1.20220623.0):
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/base/fast_type_id
    - abseil/meta/type_traits
    - abseil/types/bad_any_cast
    - abseil/utility/utility
  - abseil/types/bad_any_cast (1.20220623.0):
    - abseil/base/config
    - abseil/types/bad_any_cast_impl
  - abseil/types/bad_any_cast_impl (1.20220623.0):
    - abseil/base/config
    - abseil/base/raw_logging_internal
  - abseil/types/bad_optional_access (1.20220623.0):
    - abseil/base/config
    - abseil/base/raw_logging_internal
  - abseil/types/bad_variant_access (1.20220623.0):
    - abseil/base/config
    - abseil/base/raw_logging_internal
  - abseil/types/compare (1.20220623.0):
    - abseil/base/core_headers
    - abseil/meta/type_traits
  - abseil/types/optional (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/memory/memory
    - abseil/meta/type_traits
    - abseil/types/bad_optional_access
    - abseil/utility/utility
  - abseil/types/span (1.20220623.0):
    - abseil/algorithm/algorithm
    - abseil/base/core_headers
    - abseil/base/throw_delegate
    - abseil/meta/type_traits
  - abseil/types/variant (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/base/core_headers
    - abseil/meta/type_traits
    - abseil/types/bad_variant_access
    - abseil/utility/utility
  - abseil/utility/utility (1.20220623.0):
    - abseil/base/base_internal
    - abseil/base/config
    - abseil/meta/type_traits
  - AppAuth (1.6.2):
    - AppAuth/Core (= 1.6.2)
    - AppAuth/ExternalUserAgent (= 1.6.2)
  - AppAuth/Core (1.6.2)
  - AppAuth/ExternalUserAgent (1.6.2):
    - AppAuth/Core
  - BoringSSL-GRPC (0.0.24):
    - BoringSSL-GRPC/Implementation (= 0.0.24)
    - BoringSSL-GRPC/Interface (= 0.0.24)
  - BoringSSL-GRPC/Implementation (0.0.24):
    - BoringSSL-GRPC/Interface (= 0.0.24)
  - BoringSSL-GRPC/Interface (0.0.24)
  - CocoaLumberjack/Core (3.8.1)
  - CocoaLumberjack/Swift (3.8.1):
    - CocoaLumberjack/Core
  - Firebase/Auth (10.15.0):
    - Firebase/CoreOnly
    - FirebaseAuth (~> 10.15.0)
  - Firebase/CoreOnly (10.15.0):
    - FirebaseCore (= 10.15.0)
  - Firebase/Crashlytics (10.15.0):
    - Firebase/CoreOnly
    - FirebaseCrashlytics (~> 10.15.0)
  - Firebase/Firestore (10.15.0):
    - Firebase/CoreOnly
    - FirebaseFirestore (~> 10.15.0)
  - Firebase/Functions (10.15.0):
    - Firebase/CoreOnly
    - FirebaseFunctions (~> 10.15.0)
  - Firebase/Storage (10.15.0):
    - Firebase/CoreOnly
    - FirebaseStorage (~> 10.15.0)
  - FirebaseAppCheckInterop (10.15.0)
  - FirebaseAuth (10.15.0):
    - FirebaseAppCheckInterop (~> 10.0)
    - FirebaseCore (~> 10.0)
    - GoogleUtilities/AppDelegateSwizzler (~> 7.8)
    - GoogleUtilities/Environment (~> 7.8)
    - GTMSessionFetcher/Core (< 4.0, >= 2.1)
    - RecaptchaInterop (~> 100.0)
  - FirebaseAuthInterop (10.15.0)
  - FirebaseCore (10.15.0):
    - FirebaseCoreInternal (~> 10.0)
    - GoogleUtilities/Environment (~> 7.8)
    - GoogleUtilities/Logger (~> 7.8)
  - FirebaseCoreExtension (10.15.0):
    - FirebaseCore (~> 10.0)
  - FirebaseCoreInternal (10.15.0):
    - "GoogleUtilities/NSData+zlib (~> 7.8)"
  - FirebaseCrashlytics (10.15.0):
    - FirebaseCore (~> 10.5)
    - FirebaseInstallations (~> 10.0)
    - FirebaseSessions (~> 10.5)
    - GoogleDataTransport (~> 9.2)
    - GoogleUtilities/Environment (~> 7.8)
    - nanopb (< 2.30910.0, >= 2.30908.0)
    - PromisesObjC (~> 2.1)
  - FirebaseFirestore (10.15.0):
    - abseil/algorithm (~> 1.20220623.0)
    - abseil/base (~> 1.20220623.0)
    - abseil/container/flat_hash_map (~> 1.20220623.0)
    - abseil/memory (~> 1.20220623.0)
    - abseil/meta (~> 1.20220623.0)
    - abseil/strings/strings (~> 1.20220623.0)
    - abseil/time (~> 1.20220623.0)
    - abseil/types (~> 1.20220623.0)
    - FirebaseCore (~> 10.0)
    - "gRPC-C++ (~> 1.50.1)"
    - leveldb-library (~> 1.22)
    - nanopb (< 2.30910.0, >= 2.30908.0)
  - FirebaseFunctions (10.15.0):
    - FirebaseAppCheckInterop (~> 10.10)
    - FirebaseAuthInterop (~> 10.0)
    - FirebaseCore (~> 10.0)
    - FirebaseCoreExtension (~> 10.0)
    - FirebaseMessagingInterop (~> 10.0)
    - FirebaseSharedSwift (~> 10.0)
    - GTMSessionFetcher/Core (< 4.0, >= 2.1)
  - FirebaseInstallations (10.15.0):
    - FirebaseCore (~> 10.0)
    - GoogleUtilities/Environment (~> 7.8)
    - GoogleUtilities/UserDefaults (~> 7.8)
    - PromisesObjC (~> 2.1)
  - FirebaseMessagingInterop (10.15.0)
  - FirebaseSessions (10.15.0):
    - FirebaseCore (~> 10.5)
    - FirebaseCoreExtension (~> 10.0)
    - FirebaseInstallations (~> 10.0)
    - GoogleDataTransport (~> 9.2)
    - GoogleUtilities/Environment (~> 7.10)
    - nanopb (< 2.30910.0, >= 2.30908.0)
    - PromisesSwift (~> 2.1)
  - FirebaseSharedSwift (10.15.0)
  - FirebaseStorage (10.15.0):
    - FirebaseAppCheckInterop (~> 10.0)
    - FirebaseAuthInterop (~> 10.0)
    - FirebaseCore (~> 10.0)
    - FirebaseCoreExtension (~> 10.0)
    - GTMSessionFetcher/Core (< 4.0, >= 2.1)
  - GCDWebServer (3.5.4):
    - GCDWebServer/Core (= 3.5.4)
  - GCDWebServer/Core (3.5.4)
  - GoogleDataTransport (9.2.5):
    - GoogleUtilities/Environment (~> 7.7)
    - nanopb (< 2.30910.0, >= 2.30908.0)
    - PromisesObjC (< 3.0, >= 1.2)
  - GoogleSignIn (7.0.0):
    - AppAuth (~> 1.5)
    - GTMAppAuth (< 3.0, >= 1.3)
    - GTMSessionFetcher/Core (< 4.0, >= 1.1)
  - GoogleUtilities/AppDelegateSwizzler (7.11.5):
    - GoogleUtilities/Environment
    - GoogleUtilities/Logger
    - GoogleUtilities/Network
  - GoogleUtilities/Environment (7.11.5):
    - PromisesObjC (< 3.0, >= 1.2)
  - GoogleUtilities/Logger (7.11.5):
    - GoogleUtilities/Environment
  - GoogleUtilities/Network (7.11.5):
    - GoogleUtilities/Logger
    - "GoogleUtilities/NSData+zlib"
    - GoogleUtilities/Reachability
  - "GoogleUtilities/NSData+zlib (7.11.5)"
  - GoogleUtilities/Reachability (7.11.5):
    - GoogleUtilities/Logger
  - GoogleUtilities/UserDefaults (7.11.5):
    - GoogleUtilities/Logger
  - GRDB.swift (6.17.0):
    - GRDB.swift/standard (= 6.17.0)
  - GRDB.swift/standard (6.17.0)
  - "gRPC-C++ (1.50.1)":
    - "gRPC-C++/Implementation (= 1.50.1)"
    - "gRPC-C++/Interface (= 1.50.1)"
  - "gRPC-C++/Implementation (1.50.1)":
    - abseil/base/base (= 1.20220623.0)
    - abseil/base/core_headers (= 1.20220623.0)
    - abseil/cleanup/cleanup (= 1.20220623.0)
    - abseil/container/flat_hash_map (= 1.20220623.0)
    - abseil/container/flat_hash_set (= 1.20220623.0)
    - abseil/container/inlined_vector (= 1.20220623.0)
    - abseil/functional/any_invocable (= 1.20220623.0)
    - abseil/functional/bind_front (= 1.20220623.0)
    - abseil/functional/function_ref (= 1.20220623.0)
    - abseil/hash/hash (= 1.20220623.0)
    - abseil/memory/memory (= 1.20220623.0)
    - abseil/meta/type_traits (= 1.20220623.0)
    - abseil/random/random (= 1.20220623.0)
    - abseil/status/status (= 1.20220623.0)
    - abseil/status/statusor (= 1.20220623.0)
    - abseil/strings/cord (= 1.20220623.0)
    - abseil/strings/str_format (= 1.20220623.0)
    - abseil/strings/strings (= 1.20220623.0)
    - abseil/synchronization/synchronization (= 1.20220623.0)
    - abseil/time/time (= 1.20220623.0)
    - abseil/types/optional (= 1.20220623.0)
    - abseil/types/span (= 1.20220623.0)
    - abseil/types/variant (= 1.20220623.0)
    - abseil/utility/utility (= 1.20220623.0)
    - "gRPC-C++/Interface (= 1.50.1)"
    - gRPC-Core (= 1.50.1)
  - "gRPC-C++/Interface (1.50.1)"
  - gRPC-Core (1.50.1):
    - gRPC-Core/Implementation (= 1.50.1)
    - gRPC-Core/Interface (= 1.50.1)
  - gRPC-Core/Implementation (1.50.1):
    - abseil/base/base (= 1.20220623.0)
    - abseil/base/core_headers (= 1.20220623.0)
    - abseil/container/flat_hash_map (= 1.20220623.0)
    - abseil/container/flat_hash_set (= 1.20220623.0)
    - abseil/container/inlined_vector (= 1.20220623.0)
    - abseil/functional/any_invocable (= 1.20220623.0)
    - abseil/functional/bind_front (= 1.20220623.0)
    - abseil/functional/function_ref (= 1.20220623.0)
    - abseil/hash/hash (= 1.20220623.0)
    - abseil/memory/memory (= 1.20220623.0)
    - abseil/meta/type_traits (= 1.20220623.0)
    - abseil/random/random (= 1.20220623.0)
    - abseil/status/status (= 1.20220623.0)
    - abseil/status/statusor (= 1.20220623.0)
    - abseil/strings/cord (= 1.20220623.0)
    - abseil/strings/str_format (= 1.20220623.0)
    - abseil/strings/strings (= 1.20220623.0)
    - abseil/synchronization/synchronization (= 1.20220623.0)
    - abseil/time/time (= 1.20220623.0)
    - abseil/types/optional (= 1.20220623.0)
    - abseil/types/span (= 1.20220623.0)
    - abseil/types/variant (= 1.20220623.0)
    - abseil/utility/utility (= 1.20220623.0)
    - BoringSSL-GRPC (= 0.0.24)
    - gRPC-Core/Interface (= 1.50.1)
  - gRPC-Core/Interface (1.50.1)
  - GTMAppAuth (2.0.0):
    - AppAuth/Core (~> 1.6)
    - GTMSessionFetcher/Core (< 4.0, >= 1.5)
  - GTMSessionFetcher/Core (3.1.1)
  - KeychainAccess (4.2.2)
  - leveldb-library (1.22.2)
  - LGSideMenuController (3.1.2)
  - MBProgressHUD (1.2.0)
  - MenuItemKit (4.0.1)
  - nanopb (2.30909.0):
    - nanopb/decode (= 2.30909.0)
    - nanopb/encode (= 2.30909.0)
  - nanopb/decode (2.30909.0)
  - nanopb/encode (2.30909.0)
  - PromisesObjC (2.3.1)
  - PromisesSwift (2.3.1):
    - PromisesObjC (= 2.3.1)
  - RecaptchaInterop (100.0.0)
  - RSKPlaceholderTextView (6.1.0)
  - SKPhotoBrowser (7.0.0)
  - StepSlider (1.8.0)
  - SwiftyStoreKit (0.16.1)
  - SwipeCellKit (2.7.1)
  - ToastViewSwift (1.5.0)

DEPENDENCIES:
  - CocoaLumberjack/Swift
  - Firebase/Auth
  - Firebase/Crashlytics
  - Firebase/Firestore
  - Firebase/Functions
  - Firebase/Storage
  - GCDWebServer
  - GoogleSignIn
  - GRDB.swift
  - KeychainAccess
  - LGSideMenuController (from `https://github.com/thomasdao/LGSideMenuController`, branch `master`)
  - MBProgressHUD
  - MenuItemKit
  - RSKPlaceholderTextView
  - SKPhotoBrowser (from `https://github.com/thomasdao/SKPhotoBrowser.git`, branch `master`)
  - StepSlider
  - SwiftyStoreKit
  - SwipeCellKit (from `https://github.com/thomasdao/SwipeCellKit.git`, branch `develop`)
  - ToastViewSwift

SPEC REPOS:
  trunk:
    - abseil
    - AppAuth
    - BoringSSL-GRPC
    - CocoaLumberjack
    - Firebase
    - FirebaseAppCheckInterop
    - FirebaseAuth
    - FirebaseAuthInterop
    - FirebaseCore
    - FirebaseCoreExtension
    - FirebaseCoreInternal
    - FirebaseCrashlytics
    - FirebaseFirestore
    - FirebaseFunctions
    - FirebaseInstallations
    - FirebaseMessagingInterop
    - FirebaseSessions
    - FirebaseSharedSwift
    - FirebaseStorage
    - GCDWebServer
    - GoogleDataTransport
    - GoogleSignIn
    - GoogleUtilities
    - GRDB.swift
    - "gRPC-C++"
    - gRPC-Core
    - GTMAppAuth
    - GTMSessionFetcher
    - KeychainAccess
    - leveldb-library
    - MBProgressHUD
    - MenuItemKit
    - nanopb
    - PromisesObjC
    - PromisesSwift
    - RecaptchaInterop
    - RSKPlaceholderTextView
    - StepSlider
    - SwiftyStoreKit
    - ToastViewSwift

EXTERNAL SOURCES:
  LGSideMenuController:
    :branch: master
    :git: https://github.com/thomasdao/LGSideMenuController
  SKPhotoBrowser:
    :branch: master
    :git: https://github.com/thomasdao/SKPhotoBrowser.git
  SwipeCellKit:
    :branch: develop
    :git: https://github.com/thomasdao/SwipeCellKit.git

CHECKOUT OPTIONS:
  LGSideMenuController:
    :commit: e1aac2b9b441a81b69a662a22da75456140becbc
    :git: https://github.com/thomasdao/LGSideMenuController
  SKPhotoBrowser:
    :commit: 41c40f9789fa267b6faf6a19bc067411a28d32fd
    :git: https://github.com/thomasdao/SKPhotoBrowser.git
  SwipeCellKit:
    :commit: c7c6789181a890f817e41f8decd15f4002e6ce33
    :git: https://github.com/thomasdao/SwipeCellKit.git

SPEC CHECKSUMS:
  abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46
  AppAuth: 3bb1d1cd9340bd09f5ed189fb00b1cc28e1e8570
  BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33
  CocoaLumberjack: 5c7e64cdb877770859bddec4d3d5a0d7c9299df9
  Firebase: 66043bd4579e5b73811f96829c694c7af8d67435
  FirebaseAppCheckInterop: a8c555b1c2db1d9445e6c3a08a848167ddb7eb51
  FirebaseAuth: a55ec5f7f8a5b1c2dd750235c1bb419bfb642445
  FirebaseAuthInterop: b566e21e2bc5e44a4d44babc56d05a7e5c10493b
  FirebaseCore: 2cec518b43635f96afe7ac3a9c513e47558abd2e
  FirebaseCoreExtension: d3f1ea3725fb41f56e8fbfb29eeaff54e7ffb8f6
  FirebaseCoreInternal: 2f4bee5ed00301b5e56da0849268797a2dd31fb4
  FirebaseCrashlytics: a83f26fb922a3fe181eb738fb4dcf0c92bba6455
  FirebaseFirestore: b4c0eaaf24efda5732ec21d9e6c788d083118ca6
  FirebaseFunctions: e5a95bdd33077eefc3232381d24495ae66d3b1a7
  FirebaseInstallations: cae95cab0f965ce05b805189de1d4c70b11c76fb
  FirebaseMessagingInterop: 83f7b1a363bfe30ec8bbff1aa708d38e9d456373
  FirebaseSessions: ee59a7811bef4c15f65ef6472f3210faa293f9c8
  FirebaseSharedSwift: 34b11d9e675e14ee55e160cb7645bba30a192d14
  FirebaseStorage: 1d4be239ea32fb3c0f3680a6f2b706d6cabe37f2
  GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
  GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
  GoogleSignIn: b232380cf495a429b8095d3178a8d5855b42e842
  GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
  GRDB.swift: ce9da57719de2b5e786455ed99629506fcb19c98
  "gRPC-C++": 0968bace703459fd3e5dcb0b2bed4c573dbff046
  gRPC-Core: 17108291d84332196d3c8466b48f016fc17d816d
  GTMAppAuth: 99fb010047ba3973b7026e45393f51f27ab965ae
  GTMSessionFetcher: e8647203b65cee28c5f73d0f473d096653945e72
  KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51
  leveldb-library: f03246171cce0484482ec291f88b6d563699ee06
  LGSideMenuController: 0c7b155b0dbdf14bf8b88d5ac363c5fe1584bb23
  MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406
  MenuItemKit: 1459920e984d823e1bcc858b7a964f94e6bfa0f6
  nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
  PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
  PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
  RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
  RSKPlaceholderTextView: 52f26e643b6f9bbf16f45cd2bbe2181b6dfe090c
  SKPhotoBrowser: 6aaa8f232752e87c7e76bace183bead0a137097d
  StepSlider: 890db727e779fa99cb32afffc5887c1109e151f4
  SwiftyStoreKit: 6b9c08810269f030586dac1fae8e75871a82e84a
  SwipeCellKit: 3972254a826da74609926daf59b08d6c72e619ea
  ToastViewSwift: 496ad7918636e6e275241a93c94d6f0a57d9afb6

PODFILE CHECKSUM: c48fb662ff4328a7bd3765f58731ab3746b2ba30

COCOAPODS: 1.12.1

@google-oss-bot
Copy link

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

@rizafran
Copy link
Contributor

Hi @thomasdao, it looks like your issue is duplicate of #11509. With this, please see the discussion there.

@dconeybe
Copy link
Contributor

Hi @thomasdao, when you encountered this crash, were you using an Intel or ARM mac?

I'm asking because I'm not convinced that this is a duplicate of #11509 since the stack trace, although it includes SecureChannelCredentials, appears to be a different crash. Also, #11509 was only reproducible on iOS 12 (not to say that the crash will not occur on newer iOS versions, but we never saw the crash on iOS >12 versions).

@dconeybe dconeybe reopened this Sep 20, 2023
@dconeybe
Copy link
Contributor

@thomasdao Also, please tell me if this crash occurs in "Debug" builds, "Release" builds, or both.

@thomasdao
Copy link
Author

Hi @dconeybe, the crash occurs on ARM Mac M1, on Debug build.

@dconeybe
Copy link
Contributor

@thomasdao Thank you for the information.

Are you able to downgrade to Firestore 10.9.0? That version uses an older version of grpc any may not suffer from this crash. The newer version of grpc is known to cause a crash in ios 12, and could, theoretically, cause this crash as well.

@dconeybe
Copy link
Contributor

@thomasdao According to Apple's release notes for Xcode 15, this might be a known issue. Could you try the workaround documented there? That is, "Bump the minimum deployment target to iOS 15, macOS 12, watchOS 8 or tvOS 15, or add -Wl,-ld_classic to the OTHER_LDFLAGS build setting."

https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking

image

@thomasdao
Copy link
Author

Hi @dconeybe, I tried downgrading Firebase to 10.9.0 and the crash still occurs. If this is a known issue for Xcode (which is very likely), I'll wait for the next Xcode version and try again. For now, I still use Xcode 14.2 and it works fine with the latest Firebase 10.15.0.

@dconeybe
Copy link
Contributor

Hi @thomasdao. Thanks for letting us know. Based on this information, your crash is definitely not a duplicate of #11509. Since you have a workaround, I'm going to close this issue as "resolved". In the meantime, we'll see if we can reproduce on our end. Feel free to leave more comments, re-open the issue, or open a new issue if you run into other problems.

@dconeybe
Copy link
Contributor

I've (finally) been able to reproduce this crash locally. It's also reproducible on an Intel MacBook Pro (not just on ARM). I used Xcode 15 with iOS Simulator of iPhone 6S with iOS 14.3. I've logged b/301426582 (visible to Googlers) to track the investigation. I've re-opened this issue and will close it once a fix is merged.

@dconeybe dconeybe reopened this Sep 21, 2023
@dconeybe
Copy link
Contributor

FYI: Specifying -Wl,-ld_classic in OTHER_LDFLAGS, as suggested in #11829 (comment) fixed the crash for me.

@dconeybe
Copy link
Contributor

Also, setting the minimum deployment target to iOS 15, macOS 12, watchOS 8, and tvOS 15 will fix the crash, at the (obvious) cost of precluding running your app on those older OS versions.

@dconeybe
Copy link
Contributor

I'll wait for the next Xcode version and try again.

@thomasdao To me it seems very unlikely that a future Xcode version will "fix" this. Based on the release notes, this breakage is "accepted" and the workaround of specifying -Wl,-ld_classic is only temporary. To adopt xcode 15 or newer you will need to use one of the two workarounds.

@thomasdao
Copy link
Author

Thanks for the investigation :). My app currently supports until iOS 13, dropping to iOS 15 maybe a bit too drastic. I guess I can live with the workaround of specifying -Wl,-ld_classic in the Pods.

@paulb777
Copy link
Member

paulb777 commented Oct 3, 2023

From the Xcode 15.1 beta release note:

  • Fixed: Binaries using symbols with a weak definition crash at runtime on iOS 14/macOS 12 or older. This impacts primarily C++ projects due to their extensive use of weak symbols. (114813650)

@ivkim
Copy link

ivkim commented Oct 7, 2023

the -ld_classic seemed to work for making an iPad iOS 12.5 not crash when directly connected to Xcode. However, when published to the App Store with this linker flag set, we still encountered the same issue where the app would immediately close out. We had to revert to Xcode 14 to resolve this issue. Xcode 15.1 still seems to have this issue as we were also testing by creating Ad Hoc release builds distributed to ourselves.

@paulb777
Copy link
Member

paulb777 commented Oct 7, 2023

Does it make a difference to use Firebase 10.16 (and grpc 1.49.1)?

@ivkim
Copy link

ivkim commented Oct 7, 2023

I tried both 10.16 and 10.9

@dconeybe
Copy link
Contributor

@ivkim This could be a distinct crash from the one reported originally in this issue. Please open a brand new issue and fill out the issue template so that we can treat it as a distinct issue and investigate it accordingly.

@firebase firebase locked and limited conversation to collaborators Oct 22, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants