zoukankan      html  css  js  c++  java
  • UE4 源码bug 蓝图节点CreateSession导致的崩溃

    本文地址:https://www.cnblogs.com/LynnVon/p/13953888.html

    版本:4.25.3   之前的版本是没有错误的,4.25.3修改了这部分代码

    1.CreateSession节点,当电脑没有网络连接时,使用该节点,会Assertfail导致crash,主要是源码Engine/Runtime/Sockets/private/SocketSubsystem.cpp Line:404的方法

    TSharedRef<FInternetAddr> ISocketSubsystem::GetLocalHostAddr(FOutputDevice& Out, bool& bCanBindAll)
    {
        TSharedRef<FInternetAddr> HostAddr = CreateInternetAddr();
        bCanBindAll = false;
    
        if (!GetMultihomeAddress(HostAddr))
        {
            bCanBindAll = true;
    
            TArray<TSharedPtr<FInternetAddr>> AdapterAddresses;
            if (!GetLocalAdapterAddresses(AdapterAddresses))
            {
                Out.Logf(TEXT("Could not fetch the local adapter addresses"));
                HostAddr->SetAnyAddress();
            }
            else
            {
                HostAddr = AdapterAddresses[0]->Clone(); //有bug 会导致数组越界访问崩溃
         }
     } } return HostAddr; }

    更具体的错误应该是355行的方法bool ISocketSubsystem::GetLocalAdapterAddresses(TArray<TSharedPtr<FInternetAddr>>& OutAddresses),不过我没有更具体的去看,我直接在上边assertfail的地方加了个判断

      

    if (AdapterAddresses.Num()>0)
       {
           HostAddr = AdapterAddresses[0]->Clone();
       }

    Over!

     
  • 相关阅读:
    异常方法测试实验
    exception测试实验(研究finally的作用)
    idea中文注释出现乱码,我靠自己解决了
    按装parallels tool的失败之路
    实验七
    实验六
    实验五
    实验四
    实验3
    html转义字符图
  • 原文地址:https://www.cnblogs.com/LynnVon/p/13953888.html
Copyright © 2011-2022 走看看