运行 MDART 协议时出现 NS 2.35 分段错误(核心转储)

Posted

技术标签:

【中文标题】运行 MDART 协议时出现 NS 2.35 分段错误(核心转储)【英文标题】:NS 2.35 segmentation fault (core dumped) when running MDART protocol 【发布时间】:2021-09-06 19:08:59 【问题描述】:

当我在 NS 2.35 中运行 MDART 路由协议 tcl 脚本时,它说:

 When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6
but it doesn't seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfigure and rebuild ns if this is a problem. 

num_nodes is set 16

INITIALIZE THE LIST xListHead

channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5,  distCST_ = 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0

SORTING LISTS ...DONE!

Segmentation fault (core dumped)

模拟结束时间假设在 205s 结束,但运行动画时,模拟在 8s 结束。这是为什么?谢谢

【问题讨论】:

【参考方案1】:

ns 在 /usr/bin/tclsh8.6 中找到了正确的 tclsh 版本 但它似乎不再存在了

tcl8.6 : 你应该使用 "ns-2.35 tcl8.5.10" : 它不会改变版本或位置。 (除非你移动 ns-allinone-2.35)。外部 tcl8.6 可以改变例如更新。以后的版本往往会丢失一些文件,例如在 Debian / Ubuntu 中。

例如https://drive.google.com/file/d/0B7S255p3kFXNVVlxR0ZNRGVORjQ/view?usp=sharing

$ tar xvf ns-allinone-2.35_gcc5.tar.gz     ## 2014 - 2017 update
$ cd ns-allinone-2.35/
$ export CC=gcc-4.8 CXX=g++-4.8 && ./install

分段错误

MDART 不能与现代操作系统一起使用。最新的工作是 16 个月前更新的 Ubuntu 18.04.4。请看我的测试https://drive.google.com/drive/folders/1si2jA3lc-23lubVHb3tFbIAXfnhRfg5O?usp=sharing ..... CentOS 8 失败,Ubuntu 20.04 失败。等“2021 OS”失败。

编辑:进一步的测试表明更新的 Ubuntu 18.04 失败:MDART 的最新 Ubuntu 版本是 16.04。

注意 1:Ubuntu 16.04 nam 软件包已损坏。请使用https://drive.google.com/file/d/0B7S255p3kFXNdmxzSmRzaVRWb28/view?usp=sharing → nam_1.15-10-ubuntu14_amd64.deb

注意 2:Ubuntu 16.04 ns 命令:sudo apt install ns2

注意 3:构建 ns-allinone-2.35/ → 在最新的 Ubuntu 更新后发生随机 Tk 错误的四种情况。可能的解决方案:使用 ns-allinone-2.35_2021.tar.xz https://drive.google.com/file/d/167cP7hPnJGiNL3rK4Mxnh_-0t7_S8FTL/view?usp=sharing 和 Tcl,Tk 更新到版本 8.5.17 .... 额外的 gcc/g++ 编译器有三个选项可以试用 https://drive.google.com/drive/folders/1xVEATaYAwqvseBzYxKDzJoZ4-Hc_XOJm?usp=sharing

export CC=gcc447 CXX=g++447 && ./install     ## can also be used with ns-allinone-2.35 version 2011
export CC=gcc48 CXX=g++48 && ./install
export CC=gcc54 CXX=g++54 && ./install

模拟时间:设置为最大时间。示例:设置 set val(end) 1006.0 将运行大约 6 秒,并以:1000 simulation seconds ......结束输出文本。时间是相对的。 ns2 是在 90 世纪开发的,当时处理器非常慢 Pentium 1 / Pentium 2。 ...并且不同的协议在模拟时间上表现不同。

【讨论】:

非常有帮助...感谢您的回复...几个月来一直在寻找答案...再次感谢您 对不起,我在 Ubuntu 18.04.4 中安装 ns2.35 时遇到问题...我已经尝试过您为我提供的命令。但是当我运行 tcl 文件时,它仍然说同样的话。我是不是安装错了?我做的第一步是提取 ns2.35 allinone。然后,我编写了以下命令: $] sudo apt install build-essential autoconf automake libxmu-dev $] sudo apt install gcc-4.8 g++-4.8 $ cd ns-allinone-2.35/ $ export CC=gcc-4.8 CXX=g++ -4.8 && ./install 是不是错了? 是的,它是分段错误,我安装的操作系统说最后一次更新是 2018 年 4 月 26 日。所以这意味着我需要找到更旧的操作系统并更新 ubuntu 18.04.4 的软件才能正常运行 tcl? 软件更新内容弹出时是否需要允许下载? 注明。会试试的。

以上是关于运行 MDART 协议时出现 NS 2.35 分段错误(核心转储)的主要内容,如果未能解决你的问题,请参考以下文章

运行 C++ 代码时出现分段错误

运行我的代码时出现分段错误(核心转储)问题

运行 3 个线程时出现分段错误

代码在我的系统上运行良好,但 HackerRank 提交时出现分段错误

在 Nao 上运行暗网分类器时出现分段错误

在 libpthread.so 中运行节点时出现分段错误