IIUC an llvm::Expected is only supposed to abort if you leave its scope with an un-consumed error. LLDB_LOG_ERROR is supposed to consume the error - the code looks like it is doing that. So if you are still seeing an abort when there's an error, then it sounds like something is wrong with LLDB_LOG_ERROR.
Expected is supposed to force you to check the error - by aborting if you don't - but you are free to discard the error if it is non-fatal by consuming it, and then you should not abort. Jim > On Aug 13, 2019, at 11:19 AM, Ted Woodward via lldb-dev > <lldb-dev@lists.llvm.org> wrote: > > Hi Antonio, > > This is in regards to https://reviews.llvm.org/D64013 , specifically this > code in ProcessGDBRemote::GetImageInfoAddress: > > if (addr == LLDB_INVALID_ADDRESS) { > llvm::Expected<LoadedModuleInfoList> list = GetLoadedModuleList(); > if (!list) { > Log > *log(ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_PROCESS)); > LLDB_LOG_ERROR(log, list.takeError(), "Failed to read module list: > {0}"); > } else { > addr = list->m_link_map; > } > } > > If LLVM_ENABLE_ABI_BREAKING_CHECKS is set to 1 (which is true when asserts > are enabled), llvm::Expected will call abort() if there is an error. > GetLoadedModuleList() has many reasons to set an error, including when XML is > not available, or when the stub doesn’t support remote modules. > > I don’t think we ever want to crash LLDB if the remote stub doesn’t support > something. I don’t think llvm::Expected is the right solution here, and I > think it should be removed. > > Ted > _______________________________________________ > lldb-dev mailing list > lldb-dev@lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev