Skip to content

objc_getClassList crashed with an iOS 16 available class, in device that lower than iOS 16 #61215

Open
@kemchenj

Description

@kemchenj

Describe the bug

objc_getClassList crash in the code below:

#if canImport(RoomPlan)

import RoomPlan

@available(iOS 16, *)
class Foo: NSObject {
  var bar: CapturedRoom?
}

#endif

import SwiftUI

@main
struct MetadataAccessorCrashApp: App {
  var body: some Scene {
    WindowGroup {
      Text("")
        .onAppear {
          // Crash here
          let _ = objc_getClassList(nil, 0)
        }
    }
  }
}

Steps To Reproduce
Steps to reproduce the behavior:

  1. Clone the repository https://github.com/kemchenj/TypeMetadataAccessorCrash
  2. Open MetadataAccessorCrash.xcodeproj project
  3. Build and run on any iOS simulator or device that OS version lower than iOS 16 (e.g. iOS 15.5)
  4. App will crash when objc_getClassList was called

Expected behavior

Not crash.

Screenshots

Stacktrace:

Screen Shot 2022-09-21 at 09 11 10

Environment (please fill out the following information)

  • OS: macOS
  • Xcode 14.0

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions