AliSoftware / AliSoftware/Dip

Inconsistent Crash while resolving

Đang mở
#227 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Swift
Star
982
Fork
72
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

We're seeing a crash in DIP when creating the initial view controller which through it's references winds up trying to resolve a type which results in a crash. This type can be described as such (using made-up names to simplify):

```
struct Configuration {}

protocol Foo {}

open class SuperClass: Foo {
var configsByUser: [String: Configuration] = []
}

class SubClass: SuperClass {}
```

We register `SubClass` into the dependency container using the type `Foo`. When we resolve, there seems to be a crash at https://github.com/AliSoftware/Dip/blob/0193aa6bf6151f7ecd88ff26dba6c0525c3eabd6/Sources/AutoInjection.swift#L48

In this specific case it seems to be trying to deal with the property `configsByUser` above. In the debugger I am able to see the following:

```
(lldb) po type(of: child.value)
Swift.Dictionary
```

It seems that the data in the Mirror is neither `AutoInjectedPropertyBox` nor `ImplicitlyUnwrappedOptional`. Accessing `child.value` at all seems to crash as the debugger cannot do anything with it beyond querying the type as far as I can tell. I saw https://bugs.swift.org/browse/SR-2282 that you filed but that doesn't seem to be the same issue.

I'm unsure if this shows a problem with how things are registered or what but I wasn't sure how to chase this further. Any input would be greatly appreciated as this error happens very frequently in the simulator which is destroying our automated testing. We do not think we've seen this at all on an actual device so that could be another data point.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.