title: Android Kotlin Coroutine crash without reported fatal error in the Logcat
body: <p>I have a reoccurring crash in my code that seemingly just started happening for no reason.  My code compiles correctly, then the app crashes immediately after the viewModel is called and does not report an error in the logcat!! It's the first time I've seen a crash that doesn't report an error in the logcat. By using Timber statements, I was able to figure out that the code crashes is on the withContext line just before the livedata is updated. My question is: How can I see the fatal error so I can know how to resolve the crash?</p>
  
  <pre><code>class DashboardViewModel : ViewModel() {
  private var delDate = ""
  private var thread: Job = Job()
  private var duration: Int = ConfigData.refresh * 1000
  private var counter: Int = 0
  private var area: String = "All"
  var estFinishLiveData: MutableLiveData&lt;String&gt; = MutableLiveData()
  var trailingAreaLiveData: MutableLiveData&lt;AreaModel&gt; = MutableLiveData()
  var percentCompleteLiveData: MutableLiveData&lt;OverallModel&gt; = MutableLiveData()
  var chartDataLiveData: MutableLiveData&lt;ArrayList&lt;ChartModel&gt;&gt; = MutableLiveData()
  
  fun loadDataRefresher(periodic: Boolean, selectedArea: String) {
      counter++
      area = if (selectedArea == "All") "" else selectedArea
      Timber.d("Dashboard update $counter for $selectedArea next in ${ConfigData.refresh} seconds")
      thread = CoroutineScope(Dispatchers.IO).launch {
          loadDelDate()
          loadEstimatedFinish()
          loadTrailingArea()
          loadPercentComplete()
          loadChartData()
          if (periodic) {
              delay(duration.toLong())
              loadDataRefresher(false, selectedArea)
          }
      }
  }
  
  private fun loadDelDate() {
      delDate = DatabaseMgr.spRetrieveDeliveryDate("")
  }
  
  private suspend fun loadEstimatedFinish() {
      val estFinish = DatabaseMgr.spRetrieveEstimatedFinish(delDate)
      withContext(Dispatchers.Main) {
          estFinishLiveData.value = estFinish
      }
  }
  
  private suspend fun loadTrailingArea() {
      val areaModel = DatabaseMgr.spRetrieveTrailingArea(delDate)
      if (areaModel.description == "") {
          areaModel.description = "None in progress"
      }
      withContext(Dispatchers.Main) {
          trailingAreaLiveData.value = areaModel
      }
  }
  </code></pre>