Bug 1624

Summary: glibc-2.15/2.16 on 32bit oses broke dce-iperf
Product: dce Reporter: Hajime Tazaki <tazaki>
Component: otherAssignee: Hajime Tazaki <tazaki>
Status: CLOSED FIXED    
Severity: major CC: ns-bugs
Priority: P5    
Version: unspecified   
Hardware: All   
OS: Linux   

Description Hajime Tazaki 2013-04-12 12:09:39 EDT
changeset:   450:18d4f4c450fa
% ./waf --run dce-iperf

assert failed. cond="tAbsolute.IsPositive ()", file=../src/core/model/default-simulator-impl.cc, line=226
terminate called without an active exception

this is due to atof() called inside iperf returns invalid value, while strtod() gives okay. this is not happened in 64bit version.

I guess this is related to gcc attribute '__pure__', but not sure and will investigate it.

(gdb) l
380                 exit(1);
381                 break;
383             case 'i': // specify interval between periodic bw reports
384                 mExtSettings->mInterval = atof( optarg );
385                 if ( mExtSettings->mInterval < 0.5 ) {
386                     fprintf (stderr, report_interval_small, mExtSettings->mInterval);
387                     mExtSettings->mInterval = 0.5;
388                 }
389                 break;
(gdb) p mExtSettings->mInterval 
$3 = -nan(0x8000000000000)
(gdb) p atof(optarg)
$4 = 1

(gdb) bt
#0  Settings_Interpret (option=105 'i', optarg=0x80cdb28 "1", mExtSettings=0xb5b7000c) at Settings.cpp:385
#1  0xb5ea8b2c in Settings_ParseCommandLine (argc=7, argv=0x80cdea0, mSettings=0xb5b7000c) at Settings.cpp:299
#2  0xb5eabb45 in main (argc=7, argv=0x80cdea0) at main.cpp:167
#3  0xb7e684e6 in ns3::DceManager::DoStartProcess (context=0x80ce490) at ../model/dce-manager.cc:281
#4  0xb7ef0165 in ns3::TaskManager::Trampoline (context=0x80ce350) at ../model/task-manager.cc:274
#5  0xb7ee97d1 in ns3::UcontextFiberManager::Trampoline (a0=-1, a1=-1209073370, a2=0, a3=135062352)
    at ../model/ucontext-fiber-manager.cc:199
#6  0xb61ad6eb in makecontext () at ../sysdeps/unix/sysv/linux/i386/makecontext.S:87
#7  0xffffffff in ?? ()
#8  0xb7ef0126 in ?? () at ../model/task-manager.cc:265
   from /var/lib/jenkins/workspace/daily-dce/label/Fedora18-32/bake/source/ns-3-dce/build/lib/libns3-dce.so
#9  0xb7eefddd in ns3::TaskManager::Start (this=0x80af9dc, fn=0x80ce190, context=0x80cdee8, stackSize=1048576)
    at ../model/task-manager.cc:242
#10 0xb7ef3a27 in std::list<ns3::Task*, std::allocator<ns3::Task*> >::pop_front (this=0x80af9dc)
    at /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_list.h:983
#11 0xb7ef5af7 in ns3::RrTaskScheduler::DequeueNext (this=0x80af848) at ../model/rr-task-scheduler.cc:58
#12 0xb7ef22cc in ns3::TaskManager::Schedule (this=0x80af7c8) at ../model/task-manager.cc:436
#13 0xb7ef333f in ns3::EventMemberImpl0::Notify (this=0x80cdec8)
    at /var/lib/jenkins/workspace/daily-dce/label/Fedora18-32/bake/build/include/ns3-dev/ns3/make-event.h:94
#14 0xb7c06451 in ns3::EventImpl::Invoke (this=0x80cdec8) at ../src/core/model/event-impl.cc:45
#15 0xb7c0b0ce in ns3::DefaultSimulatorImpl::ProcessOneEvent (this=0x80ac3c8)
    at ../src/core/model/default-simulator-impl.cc:140
#16 0xb7c0b477 in ns3::DefaultSimulatorImpl::Run (this=0x80ac3c8) at ../src/core/model/default-simulator-impl.cc:193
#17 0xb7c071f3 in ns3::Simulator::Run () at ../src/core/model/simulator.cc:160
#18 0x08054a9c in main (argc=1, argv=0xbffff294) at ../example/dce-iperf.cc:130
Comment 1 Hajime Tazaki 2013-04-17 00:58:43 EDT
tested under ubuntu1004-64, 1204-32/64, 1210-64, 1304-beta-64, f18-32.