Code Monkey home page Code Monkey logo

qflex's People

Contributors

branylagaffe avatar hnefi avatar katetsu avatar neo-apz avatar sid1994 avatar truls avatar ulisesluzius avatar ustiugov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qflex's Issues

Unexpected segmentation fault with flexus enabled

I'm not sure if it is the right place to report this issue but issues was disabled for qemu repository so I'm reporting this here.

Short description

When I configure and build qemu using the --enable-flexus option and then try to run data caching workload from cloudsutie on an image I get an unexpected segmentation fault.

Steps to reproduce and details

  1. Follow the instructions here to build qemu
  2. Use our Docker compatible image
  3. Run the image as a single instance.
  4. Now follow the instructions on how to run cloudsuite benchmark which is described here but use images built for ARM instead. We don't have those images officially released yet, you can find two images which I built and put on docker hub to reproduce this issue, you can find data caching client tagged as dc-client and and server tagged as dc-server here. (Just use aliasgarikh/test-cloudsuite:dc-server or aliasgarikh/test-cloudsuite:dc-client instead of what mentioned in the cloudsuite download page).
  5. It might not crash at the same point each time but you can reproduce this issue by giving it several tries.
    This was only the scenario that we care because cloudsuite is docker based. But I tested it with different setups to make sure the problem is with the --enable-flexus option. I tested with two different OS images, different qemu versions and configurations and different memcached versions and setups. You can see the details of tests below:
| Qemu  |QemuImage|Docker| Memcached |ServerThreads|ServerCores| Status
--------+---------+------+-----------+-------------+-----------+------------------------------------------------------------------------------------
| v1.0  | debian  |      |   1.4.24  |      4      |     3     |Succeeded, Crash the whole Qemu!
| v1.0  | debian  |      |   1.4.24  |      4      |     4     |5 x Succeeded, 2 x Crash the whole Qemu in the second warm up!
|oldev* | debian  |      |   1.4.24  |      4      |     3     |Crashed on the second warm up!
| dev   | debian  |      |   1.4.24  |      4      |     3     |Succeeded
| dev   | debian  |      |   1.4.24  |      4      |     4     |Crashed on the first warm up!, 2 x Crashed on the second warm up!
| v1.0  | debian  |      |   1.5.9   |      4      |     4     |2 x Succeeded
| v1.0  | ubuntu  |      |   1.4.25  |      4      |     4     |2 x Succeeded
| v1.0  | ubuntu  |   x  |   1.5.9   |      4      |     4     |Succeeded, Failure due to docker_servers.txt misconfiguration with a line in the end
|devwos*| ubuntu  |   x  |   1.5.9   |      4      |     4     |Failed with "free(): invalid next size (normal) Aborted (core dumped)"
|devwos*| ubuntu  |   x  |   1.5.9   |      4      |     4     |Failed with "Write error: -1 Write error: Connection reset by peer"
|devwin*| ubuntu  |   x  |   1.5.9   |      4      |     4     |Succeeded
|devwis*| ubuntu  |   x  |   1.5.9   |      4      |     4     |2 x Succeeded

* oldev: commit 3a2447d
* devwos: dev version without the --enable-extsnap option
* devwin: dev with nothing enabled (only the --target-list=aarch64-softmmu option)
* devwis: dev without --enable-flexus and with --enable-extsnap. More precisely ./configure --target-list=aarch64-softmmu --enable-extsnap

Captain script is not compatible with python3

The set of scripts in /path/to/qflex/scripts/captain uses statements and features that are specific to python 2. At some point, we should go over this and make it portable so that it can work no matter the host OS.

An example error (when running on Ubuntu 20.04LTS, with default system python 3.8) is:

./captain -p /path/to/captain/system.ini

Traceback (most recent call last):
  File "/home/hnefi/parsa/qflex_clean/scripts/captain/qfsystem.py", line 257, in exit
    self.cleanup()
  File "/home/hnefi/parsa/qflex_clean/scripts/captain/qfsystem.py", line 276, in cleanup
    i.cleanup()
  File "/home/hnefi/parsa/qflex_clean/scripts/captain/qfinstance.py", line 349, in cleanup
    if psutil.pid_exists(self.__pid):
  File "/usr/local/lib/python3.8/dist-packages/psutil/__init__.py", line 1395, in pid_exists
    if pid < 0:
TypeError: '<' not supported between instances of 'NoneType' and 'int'

For now this can be low priority because it is a trivial workaround to install python2 and invoke the script as follows:

python2 captain -p /path/to/captain/system.ini

MMU Bad initialization

MMU Bad initialization

Description

The MMU initialization goes wrong, which fall onto a g_assert_not_reached()

Steps to Reproduce

  1. Assert that -mmu:perfect is set to 0 in trace.cfg
  2. Run simulation ./runq images/busybox

Expected Behavior

The initialization should go on and set the MMU before receiving any trace.

Actual Behavior

Assertion ERROR.

Additional Information

Screenshots (if applicable)

118 <ComponentManager.cpp:100> {0}- Initializing 8 components...
119 <ComponentManager.cpp:105> {0}- Component 1: Initializing sys-feeder
120 <flexus.cpp:267> {0}- Timestamp: Tue Apr  2 15:30:02 2024

121 <ComponentManager.cpp:105> {0}- Component 2: Initializing sys-bpwarm
122 <ComponentManager.cpp:105> {0}- Component 3: Initializing sys-L1d
123 <FastCacheImpl.cpp:177> {0}- Running with MT width 1
124 <ComponentManager.cpp:105> {0}- Component 4: Initializing sys-L1i
125 <ComponentManager.cpp:105> {0}- Component 5: Initializing sys-L2
126 <FastCMPCacheImpl.cpp:266> {0}- Running with CMP width 1
127 <StandardDirectory.cpp:102> {0}- Initialized Directory with 2048 x 16-way sets
128 <StandardDirectory.cpp:104> {0}-    SetMask = 7ff, SetShift = 6, SkewShift = 23, SkewSet = true
129 <FastCMPCacheImpl.cpp:305> {0}- Coherence Unit is: 64
130 <FastCMPCacheImpl.cpp:306> {0}- sizeof(PhysicalMemoryAddress) = 8
131 <ComponentManager.cpp:105> {0}- Component 6: Initializing sys-memory
132 <ComponentManager.cpp:105> {0}- Component 7: Initializing sys-magic-break
133 <ComponentManager.cpp:105> {0}- Component 8: Initializing sys-mmu
134 <startup.cpp:228> {0}- Flexus Initialized.
135 <MMUUtil.cpp:243> (<undefined>[<undefined>]) {0}- Assertion failed: (!(false)) : Unknown value in getting TG1 Granule Size. TG_SZ = 0
``

segmentation fault of qemu while launching Apache Spark

Hi,

I have been trying to run Apache Spark on the debian-blank qcow2 image. I just downloaded the pre-built spark package, spark-2.1.0-bin-hadoop2.7.tgz and untar the file and ran the spark-shell like below.

cloudsuite@cloudsuite-debian:~/spark-2.1.0$ ./bin/spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Connection to localhost closed by remote host.
Connection to localhost closed.

While executing the shell, the qemu has been crashed due to a segmentation fault like below.

cloudsuite-debian login: ./run_instance.sh: line 276: 32420 Segmentation fault      (core dumped) $RUN_CFG $QEMU_PATH/qemu-system-aarch64 -machine virt -cpu cortex-a57 -smp $QEMU_CORE_NUM -m $MEM -kernel ${KERNEL_PATH}/${KERNEL} -append "console=ttyAMA0 root=/dev/sda2" -initrd ${KERNEL_PATH}/${INITRD} -nographic -rtc driftfix=slew $NETWORK_CONFIG $DISK_CONFIG $ICOUNT_CONFIG $FLEXUS $QUANTUM_OPT $QMP

So, I tried to debug with the generated core dump file with gdb. In helper_le_ldq_mmu function, the fault occurred. Does anyone experience similar issues?

jeongseob@concerto:~/qflex/scripts ((v1.0))$ gdb ../qemu/aarch64-softmmu/qemu-system-aarch64 core
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ../qemu/aarch64-softmmu/qemu-system-aarch64...done.

warning: core file may not match specified executable file.
[New LWP 32423]
[New LWP 32420]
[New LWP 454]
[New LWP 32421]
[New LWP 456]
[New LWP 457]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/home/jeongseob/qflex/qemu/aarch64-softmmu/qemu-system-aarch64 -machine virt -c'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000562f443f471d in helper_le_ldq_mmu (env=0x562f454f3670, addr=4040273032, oi=<optimized out>, retaddr=139776409157361)
    at /home/jeongseob/qflex/qemu/softmmu_template.h:242
242         haddr = addr + env->tlb_table[mmu_idx][index].addend;
[Current thread is 1 (Thread 0x7f2004aa7700 (LWP 32423))]
(gdb) bt
#0  0x0000562f443f471d in helper_le_ldq_mmu (env=0x562f454f3670, addr=4040273032, oi=<optimized out>, retaddr=139776409157361)
    at /home/jeongseob/qflex/qemu/softmmu_template.h:242
#1  0x00007f203b3740ae in code_gen_buffer ()
#2  0x0000562f443be9cc in cpu_tb_exec (itb=0x7f2011c00110, itb=0x7f2011c00110, cpu=0x7f203b37abf0 <code_gen_buffer+554802120>) at /home/jeongseob/qflex/qemu/cpu-exec.c:163
#3  cpu_arm_exec (cpu=cpu@entry=0x562f454eb3d0) at /home/jeongseob/qflex/qemu/cpu-exec.c:531
#4  0x0000562f443d9e2f in tcg_cpu_exec (cpu=0x562f454eb3d0) at /home/jeongseob/qflex/qemu/cpus.c:1526
#5  0x0000562f443db873 in tcg_exec_all () at /home/jeongseob/qflex/qemu/cpus.c:1561
#6  qemu_tcg_cpu_thread_fn (arg=<optimized out>) at /home/jeongseob/qflex/qemu/cpus.c:1182
#7  0x00007f205b0a46ba in start_thread (arg=0x7f2004aa7700) at pthread_create.c:333
#8  0x00007f205adda3dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb)

Host: Ubuntu 16.04
qflex: v1.0
image: debian-blank.qcow2
run mode: without flexus

Thanks,
Jeongseob

deprecated-declarations on hw-libusb.c

./build_qemu.sh -emulation returns this error below:

hw/usb/host-libusb.c: In function ‘usb_host_init’:
hw/usb/host-libusb.c:294:5: error: ‘libusb_set_debug’ is deprecated: Use libusb_set_option instead [-Werror=deprecated-declarations] libusb_set_debug(ctx, loglevel);
                                                            ^~~~~~~~~~~~~~~~
In file included from hw/usb/host-libusb.c:84:
/usr/include/libusb-1.0/libusb.h:1300:18: note: declared here
 void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
                                   ^~~~~~~~~~~~~~~~

./test_run_system/test.sh failed

Hi All,

I am also testing QFlex (v1.0 branch) with the ./test_run_system/test.sh script, but there are a couple of errors occurred in testing the script. In particular, it failed to load the snapshot even if creating a snapshot was successful.

I am working on the images provided and at that time before I ran the test script, the images do not have any snapshots like below.

jeongseob@concerto:~/qflex/scripts ((v1.0))$ grep image user.cfg
set_variable KERNEL_PATH "$HOME/qflex/images/kernel"
set_variable IMG_0 "$HOME/qflex/images/debian-memcached/debian.qcow2"
set_variable IMG_1 "$HOME/qflex/images/debian-blank/debian.qcow2"
jeongseob@concerto:~/qflex/scripts ((v1.0))$ qemu-img snapshot -l ../images/debian-memcached/debian.qcow2
jeongseob@concerto:~/qflex/scripts ((v1.0))$ qemu-img snapshot -l ../images/debian-blank/debian.qcow2

I got the following error failing to delete the snapshot through the test script. The root cause of the error seems like my QEMU cannot SSH, but I don't understand why I need to have SSH to delete the snapshot of the image.

Please let me know If I am supposed to do something to enable SSH.

jeongseob@concerto:~/qflex/scripts ((v1.0))$ ./test_run_system/test.sh

 *** Running run_system.sh ***
Creating folder /home/jeongseob/qflex/scripts/test_run_system/results/single_save

Running Single Instance Mode : Port 2220
/home/jeongseob/qflex/scripts/run_instance.sh --kill -exp=test_run_system/results/single_save -ow -sn=test_snap
Booting... Please wait

send: spawn id exp4 not open
    while executing
"send "echo Exiting Test\r""
Running Commands
Finished Commands

Taking Snapshot test_snap
Snapshot Saved

Killing all QEMU instances
[  PASSED  ] Booting Default
[  PASSED  ] Saving Snapshot

 *** Running run_system.sh ***
Creating folder /home/jeongseob/qflex/scripts/test_run_system/results/single_load

Running Single Instance Mode : Port 2220
/home/jeongseob/qflex/scripts/run_instance.sh --kill -exp=test_run_system/results/single_load -ow -lo=test_snap -rs -sn=test_snap
Booting... Please wait

/home/jeongseob/qflex/scripts/test_run_system/../run_system.sh:107: QEMU Runtime ERROR cannot SSH[  FAILED  ] Loading Snapshot
[  FAILED  ] Deleting Snapshot

 *** Running run_system.sh ***
Creating folder /home/jeongseob/qflex/scripts/test_run_system/results/multiple_ping

*** Removing Existing Taps and Bridges
Restarting networking (via systemctl): networking.service.
*** Creating New Taps and Bridges
Restarting networking (via systemctl): networking.service.
Linking Taps and Bridges...
Taps and Bridges linked successfully

Running Multiple Instance Mode : Port 2220
/home/jeongseob/qflex/scripts/run_instance.sh --kill -exp=test_run_system/results/multiple_ping -mult -ow --no_ns3 -num=0
Booting... Please wait

/home/jeongseob/qflex/scripts/test_run_system/../run_system.sh:107: QEMU Runtime ERROR cannot SSH[  FAILED  ] Configuration Multiple Instance 0
[  FAILED  ] Configuration Multiple Instance 1
[  FAILED  ] Booting Multiple Instance 0
[  FAILED  ] Booting Multiple Instance 1
[  FAILED  ] PING through NS3

Summary:
[  PASSED  ] Booting Default
[  PASSED  ] Saving Snapshot
[  FAILED  ] Loading Snapshot
[  FAILED  ] Deleting Snapshot
[  FAILED  ] Configuration Multiple Instance 0
[  FAILED  ] Configuration Multiple Instance 1
[  FAILED  ] Booting Multiple Instance 0
[  FAILED  ] Booting Multiple Instance 1
[  FAILED  ] PING through NS3

icount option leads to error while boot

When I add these lines to mrun configuration file:

    <parameter>
        <enabled>on</enabled>
        <option>-icount</option>
        <arg>shift=2,sleep=off</arg>
    </parameter>

I it fails to boot our Docker Installed image. The Qemu output from machine serial is like this:

Trying ::1...
Connected to localhost.
Escape character is '^]'.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-83-generic (buildd@bos01-arm64-003) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) ) #106-Ubuntu SMP Mon Jun 26 17:58:57 UTC 2017 (Ubuntu 4.4.0-83.106-generic 4.4.70)
[    0.000000] Boot CPU: AArch64 Processor [411fd070]
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] No NUMA configuration found
[    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x0000000233ffffff]
[    0.000000] NUMA: Adding memblock [0x40000000 - 0x233ffffff] on node 0
[    0.000000] NUMA: Initmem setup node 0 [mem 0x40000000-0x233ffffff]
[    0.000000] NUMA: NODE_DATA [mem 0x233ff0280-0x233ff1fff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000040000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x0000000233ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000040000000-0x0000000233ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x0000000233ffffff]
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv0.2 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] PERCPU: Embedded 17 pages/cpu @ffff8001f3f35000 s31256 r8192 d30184 u69632
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 832075
[    0.000000] CPU features: enabling workaround for ARM erratum 834220
[    0.000000] Built 1 zonelists in Node order, mobility grouping on.  Total pages: 2016000
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: 'root=/dev/sda2'
[    0.000000] log_buf_len individual max cpu contribution: 4096 bytes
[    0.000000] log_buf_len total cpu_extra contributions: 28672 bytes
[    0.000000] log_buf_len min size: 16384 bytes
[    0.000000] log_buf_len: 65536 bytes
[    0.000000] early log buf free: 13696(83%)
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] software IO TLB [mem 0xfbfff000-0xfffff000] (64MB) mapped at [ffff8000bbfff000-ffff8000bfffefff]
[    0.000000] Memory: 7943672K/8192000K available (8804K kernel code, 1014K rwdata, 3816K rodata, 760K init, 787K bss, 248328K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vmalloc : 0xffff000000000000 - 0xffff7bffbfff0000   (126974 GB)
[    0.000000]     vmemmap : 0xffff7bffc0000000 - 0xffff7fffc0000000   (  4096 GB maximum)
[    0.000000]               0xffff7bffc0000000 - 0xffff7bffc7d00000   (   125 MB actual)
[    0.000000]     fixed   : 0xffff7ffffa7fd000 - 0xffff7ffffac00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffff7ffffae00000 - 0xffff7ffffbe00000   (    16 MB)
[    0.000000]     modules : 0xffff7ffffc000000 - 0xffff800000000000   (    64 MB)
[    0.000000]     memory  : 0xffff800000000000 - 0xffff8001f4000000   (  8000 MB)
[    0.000000]       .init : 0xffff800000cd5000 - 0xffff800000d93000   (   760 KB)
[    0.000000]       .text : 0xffff800000080000 - 0xffff800000cd5000   ( 12628 KB)
[    0.000000]       .data : 0xffff800000da4000 - 0xffff800000ea1800   (  1014 KB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	Build-time adjustment of leaf fanout to 64.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=128 to nr_cpu_ids=8.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=8
[    0.000000] NR_IRQS:64 nr_irqs:64 0
[    0.000000] GICv2m: range[0x8020000:0x8020fff], SPI[80:144]
[    0.000000] Architected cp15 timer(s) running at 62.50MHz (virt).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x1cd42e208c, max_idle_ns: 881590405314 ns
[    0.000010] sched_clock: 56 bits at 62MHz, resolution 16ns, wraps every 4398046511096ns
[    0.000302] Console: colour dummy device 80x25
[    0.004583] console [tty0] enabled
[    0.004736] Calibrating delay loop (skipped), value calculated using timer frequency.. 125.00 BogoMIPS (lpj=250000)
[    0.004880] pid_max: default: 32768 minimum: 301
[    0.005144] Security Framework initialized
[    0.005213] Yama: becoming mindful.
[    0.005357] AppArmor: AppArmor initialized
[    0.013755] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
[    0.047257] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.062177] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes)
[    0.062391] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes)
[    0.064456] Initializing cgroup subsys io
[    0.064534] Initializing cgroup subsys memory
[    0.064633] Initializing cgroup subsys devices
[    0.064712] Initializing cgroup subsys freezer
[    0.064790] Initializing cgroup subsys net_cls
[    0.064876] Initializing cgroup subsys perf_event
[    0.064958] Initializing cgroup subsys net_prio
[    0.065037] Initializing cgroup subsys hugetlb
[    0.065112] Initializing cgroup subsys pids
[    0.065239] ftrace: allocating 30472 entries in 120 pages
[    0.206138] EFI services will not be available.
[    0.206225] ASID allocator initialised with 65536 entries
[    0.211383] Detected PIPT I-cache on CPU1
[    0.211434] CPU1: Booted secondary processor [411fd070]
[    0.212066] Detected PIPT I-cache on CPU2
[    0.212117] CPU2: Booted secondary processor [411fd070]
[    0.212787] Detected PIPT I-cache on CPU3
[    0.212838] CPU3: Booted secondary processor [411fd070]
[    0.213473] Detected PIPT I-cache on CPU4
[    0.213524] CPU4: Booted secondary processor [411fd070]
[    0.214194] Detected PIPT I-cache on CPU5
[    0.214246] CPU5: Booted secondary processor [411fd070]
[    0.214922] Detected PIPT I-cache on CPU6
[    0.214974] CPU6: Booted secondary processor [411fd070]
[    0.215621] Detected PIPT I-cache on CPU7
[    0.215673] CPU7: Booted secondary processor [411fd070]
[    0.215771] Brought up 8 CPUs
[    0.216758] SMP: Total of 8 processors activated.
[    0.216839] CPU: All CPU(s) started at EL1
[    0.216988] alternatives: patching kernel code
[    0.219113] devtmpfs: initialized
[    0.223965] evm: security.selinux
[    0.224031] evm: security.SMACK64
[    0.224097] evm: security.SMACK64EXEC
[    0.224165] evm: security.SMACK64TRANSMUTE
[    0.224234] evm: security.SMACK64MMAP
[    0.224301] evm: security.ima
[    0.224366] evm: security.capability
[    0.224729] DMI not present or invalid.
[    0.225268] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.225666] futex hash table entries: 2048 (order: 6, 262144 bytes)
[    0.226664] pinctrl core: initialized pinctrl subsystem
[    0.228849] NET: Registered protocol family 16
[    0.242059] cpuidle: using governor ladder
[    0.254085] cpuidle: using governor menu
[    0.254274] vdso: 2 pages (1 code @ ffff800000da9000, 1 data @ ffff800000da8000)
[    0.254440] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.254766] DMA: preallocated 256 KiB pool for atomic allocations
[    0.255270] Serial: AMBA PL011 UART driver
[    0.268462] 9000000.pl011: ttyAMA0 at MMIO 0x9000000 (irq = 39, base_baud = 0) is a PL011 rev1
[    0.270638] console [ttyAMA0] enabled
[    0.304970] ACPI: Interpreter disabled.
[    0.306504] vgaarb: loaded
[    0.309616] SCSI subsystem initialized
[    0.310508] usbcore: registered new interface driver usbfs
[    0.310685] usbcore: registered new interface driver hub
[    0.310898] usbcore: registered new device driver usb
[    0.312490] dmi: Firmware registration failed.
[    0.314441] NetLabel: Initializing
[    0.314514] NetLabel:  domain hash size = 128
[    0.314591] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.314752] NetLabel:  unlabeled traffic allowed by default
[    0.315348] clocksource: Switched to clocksource arch_sys_counter
[    0.385283] AppArmor: AppArmor Filesystem Enabled
[    0.385855] pnp: PnP ACPI: disabled
[    0.404356] NET: Registered protocol family 2
[    0.406148] TCP established hash table entries: 65536 (order: 7, 524288 bytes)
[    0.409853] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[    0.413355] TCP: Hash tables configured (established 65536 bind 65536)
[    0.413646] UDP hash table entries: 4096 (order: 5, 131072 bytes)
[    0.414442] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
[    0.415434] NET: Registered protocol family 1
[    0.415875] Unpacking initramfs...
[    6.084029] Freeing initrd memory: 35024K (ffff800008000000 - ffff80000a234000)
[    6.084913] hw perfevents: enabled with armv8_pmuv3 PMU driver, 1 counters available
[    6.085141] kvm [1]: HYP mode not available
[    6.092685] audit: initializing netlink subsys (disabled)
[    6.092811] audit: type=2000 audit(5.888:1): initialized
[    6.093762] Initialise system trusted keyring
[    6.094924] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    6.114564] zbud: loaded
[    6.118713] VFS: Disk quotas dquot_6.6.0
[    6.119179] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    6.122633] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    6.125489] fuse init (API version 7.23)
[    6.126978] Key type big_key registered
[    6.127256] Allocating IMA MOK and blacklist keyrings.
[    6.130477] Key type asymmetric registered
[    6.130574] Asymmetric key parser 'x509' registered
[    6.131069] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    6.131801] io scheduler noop registered
[    6.131888] io scheduler deadline registered (default)
[    6.132309] io scheduler cfq registered
[    6.135107] pl061_gpio 9030000.pl061: PL061 GPIO chip @0x0000000009030000 registered
[    6.136142] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    6.136287] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    6.136606] PCI host bridge /pcie@10000000 ranges:
[    6.136706]    IO 0x3eff0000..0x3effffff -> 0x00000000
[    6.136805]   MEM 0x10000000..0x3efeffff -> 0x10000000
[    6.136898]   MEM 0x8000000000..0xffffffffff -> 0x8000000000
[    6.137832] pci-host-generic 3f000000.pcie: PCI host bridge to bus 0000:00
[    6.137936] pci_bus 0000:00: root bus resource [bus 00-0f]
[    6.138032] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    6.138133] pci_bus 0000:00: root bus resource [mem 0x10000000-0x3efeffff]
[    6.138238] pci_bus 0000:00: root bus resource [mem 0x8000000000-0xffffffffff]
[    6.144548] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    6.159659] msm_serial: driver initialized
[    6.162023] Unable to detect cache hierarchy from DT for CPU 0
[    6.176870] loop: module loaded
[    6.179137] libphy: Fixed MDIO Bus: probed
[    6.179233] tun: Universal TUN/TAP device driver, 1.6
[    6.179326] tun: (C) 1999-2004 Max Krasnyansky <[email protected]>
[    6.185382] PPP generic driver version 2.4.2
[    6.186263] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.186379] ehci-pci: EHCI PCI platform driver
[    6.186551] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    6.186665] ohci-pci: OHCI PCI platform driver
[    6.186846] uhci_hcd: USB Universal Host Controller Interface driver
[    6.187784] mousedev: PS/2 mouse device common for all mice
[    6.188686] i2c /dev entries driver
[    6.190972] device-mapper: uevent: version 1.0.3
[    6.191760] device-mapper: ioctl: 4.34.0-ioctl (2015-10-28) initialised: [email protected]
[    6.192460] ledtrig-cpu: registered to indicate activity on CPUs
[    6.195192] NET: Registered protocol family 10
[    6.197142] NET: Registered protocol family 17
[    6.197305] Key type dns_resolver registered
[    6.197514] Registered cp15_barrier emulation handler
[    6.197641] Registered setend emulation handler
[    6.198839] registered taskstats version 1
[    6.199072] Loading compiled-in X.509 certificates
[    6.211572] Loaded X.509 cert 'Build time autogenerated kernel key: d8e6d449238b491ad070787e9897e07b6d2d20ab'
[    6.211878] zswap: loaded using pool lzo/zbud
[    6.225885] Key type trusted registered
[    6.304021] Key type encrypted registered
[    6.304121] AppArmor: AppArmor sha1 policy hashing enabled
[    6.304223] ima: No TPM chip found, activating TPM-bypass!
[    6.304471] evm: HMAC attrs: 0x1
[    6.305132] hctosys: unable to open rtc device (rtc0)
[    6.307051] uart-pl011 9000000.pl011: no DMA platform data
[    6.307651] Freeing unused kernel memory: 760K (ffff800000cd5000 - ffff800000d93000)
[    6.307842] Freeing alternatives memory: 48K (ffff800000d93000 - ffff800000d9f000)
Loading, please wait...
starting version 229
[    6.398805] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.399726] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.400011] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.400363] random: systemd-udevd: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.416388] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.416797] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.417032] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.417778] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.418513] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.419247] random: udevadm: uninitialized urandom read (16 bytes read, 1 bits of entropy available)
[    6.962682] scsi host0: Virtio SCSI HBA
[    6.998043] scsi 0:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
[    7.908130] sd 0:0:0:0: [sda] 8388608 512-byte logical blocks: (4.29 GB/4.00 GiB)
[    7.908341] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    7.909909] sd 0:0:0:0: [sda] Write Protect is off
[    7.910101] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    7.913710]  sda: sda1 sda2 sda3
[    7.918517] sd 0:0:0:0: [sda] Attached SCSI disk
Begin: Loading essential drivers ... [    9.775985] md: linear personality registered for level -1
[    9.806905] md: multipath personality registered for level -4
[    9.838331] md: raid0 personality registered for level 0
[    9.875705] md: raid1 personality registered for level 1
[    9.999802] raid6: int64x1  gen()   131 MB/s
[   10.067517] raid6: int64x1  xor()    74 MB/s
[   36.227436] NMI watchdog: BUG: soft lockup - CPU#4 stuck for 22s! [modprobe:515]
[   36.227569] Modules linked in: raid6_pq(+) libcrc32c raid1 raid0 multipath linear crc32_arm64 aes_ce_blk aes_ce_cipher ghash_ce sha2_ce sha1_ce virtio_scsi aes_neon_blk ablk_helper cryptd
[   36.227913] 
[   36.227985] CPU: 4 PID: 515 Comm: modprobe Not tainted 4.4.0-83-generic #106-Ubuntu
[   36.228121] Hardware name: linux,dummy-virt (DT)
[   36.228207] task: ffff8001e8e83400 ti: ffff8000ba2d8000 task.ti: ffff8000ba2d8000
[   36.228406] PC is at raid6_int2_gen_syndrome+0x78/0xf8 [raid6_pq]
[   36.228496] LR is at 0x100010100010000
[   36.228576] pc : [<ffff7ffffc159460>] lr : [<0100010100010000>] pstate: 00000145
[   36.228711] sp : ffff8000ba2dbac0
[   36.228785] x29: ffff8000ba2dbac0 x28: ffff7ffffc16e6f0 
[   36.228881] x27: 00000000000000fa x26: ffff800000daab10 
[   36.228978] x25: ffff8000ba2dbb48 x24: ffff8000ba636000 
[   36.229075] x23: 0000000000000087 x22: 0000000000000098 
[   36.229171] x21: ffff800000daa300 x20: ffff7ffffc15c108 
[   36.229268] x19: ffff7ffffc16e500 x18: ffff8000ba2dbbc0 
[   36.229365] x17: ffff8000ba637000 x16: ffff8000ba636000 
[   36.229461] x15: 000000000000000e x14: 0000000000000e70 
[   36.229557] x13: 0000000000000e78 x12: 0000000000000e70 
[   36.229653] x11: 1d1d1d1d1d1d1d1d x10: b0beaca28886949a 
[   36.229750] x9 : c0cedcd2f8f6e4ea x8 : 938dafb1ebf5d7c9 
[   36.229847] x7 : ffff7ffffc15e500 x6 : 0000000000000000 
[   36.229943] x5 : 0000808000008080 x4 : 8080000080800000 
[   36.230040] x3 : 471ef5ac3e678cd5 x2 : ffff8000ba2dbb48 
[   36.230136] x1 : 0000000000001000 x0 : b5ec075ecc957e27 
[   36.230229] 

Update branching system and repository policies

QFlex repository is a mess of different active and stale branches. The QFlex repository need policies update toward branch naming, and who and how can branch be merged.

  • Get admin right on QFlex repository, and subsequent one
    • (Optional) Get Organization admin right
  • Pick branching methodology
  • Pick policies
  • List to be deleted branches
  • Communicate changes
  • Update branching

Segmentation fault when running Qflex with timing mode

When I ran the QFlex with timing mode, a segmentation fault occurred.
I debugged with GDB but it doesn't work.
How to solve this problem ?
Run log is below.

//   QFlex simulator - Built as KnottyKraken v1.0

5 <startup.cpp:236> {0}- Initializing Flexus.
6 <startup.cpp:238> {0}- Compiled with Boost: 1.70.0
7 <startup.cpp:110> {0}- Instantiating Flexus components with SystemWidth = 1
8 <ComponentManager.cpp:85> {0}- Instantiating system with a width factor of: 1
9 <uFetch.hpp:99> {0}- ufetch port InstructionFetchSeen is not wired
10 <uFetch.hpp:99> {0}- ufetch port ClockTickSeen is not wired
11 <armDecoder.hpp:76> {0}- decoder port DispatchedInstructionOut is not wired
12 <uArchARM.hpp:140> {0}- uarcharm port StoreForwardingHitSeen is not wired
13 <Cache.hpp:102> {0}- L1d port FrontSideOut_I is not wired
14 <Cache.hpp:102> {0}- L1d port BackSideOut_Prefetch is not wired
15 <breakpoint_tracker.cpp:504> {0}- Successfully registered RegressionTrackerMagicBreakpoint with QEMU, cpu_id = 0, struct id = 0
16 <wiring.cpp:100> {0}-  initializing Parameters...
17 <flexus.cpp:421> {0}- Set stat interval to : 100000
18 <flexus.cpp:441> {0}- Set profile interval to : 10000000
19 <flexus.cpp:446> {0}- Set timestamp interval to : 50000
Formatting '/home/s00523304/qflex/qflex/images/ubuntu16/ubuntu.qcow2-1AEFE10D-i1-tmp', fmt=qcow2 size=21474836480 backing_file=/home/s00523304/qflex/qflex/images/ubuntu16/ubuntu.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16
WARNING: There is no parameter named "-bpwarm:cores"
WARNING: There is no parameter named "-feeder:stick"
WARNING: There is no parameter named "-feeder:housekeeping_period"
WARNING: There is no parameter named "-feeder:ifetch"
WARNING: There is no parameter named "-feeder:CMPwidth"
WARNING: There is no parameter named "-feeder:send_non_allocating_stores"
WARNING: There is no parameter named "-L1d:mt_width"
WARNING: There is no parameter named "-L1d:size"
WARNING: There is no parameter named "-L1d:assoc"
WARNING: There is no parameter named "-L1d:clean_evict"
20 <configuration.hpp:210> {0}- Bad Lexical Cast attempting to set dynamic parameter.
WARNING: Unable to set parameter CacheLevel to eL1
WARNING: There is no parameter named "-L1d:notify_reads"
WARNING: There is no parameter named "-L1d:notify_writes"
WARNING: There is no parameter named "-L1d:trace_tracker_on"
WARNING: There is no parameter named "-L1d:rsize"
WARNING: There is no parameter named "-L1d:rt_assoc"
WARNING: There is no parameter named "-L1d:rt_size"
WARNING: There is no parameter named "-L1d:rt_repl"
WARNING: There is no parameter named "-L1d:erb_size"
WARNING: There is no parameter named "-L1d:std_array"
WARNING: There is no parameter named "-L1d:block_scout"
WARNING: There is no parameter named "-L1d:skew_block_set"
WARNING: There is no parameter named "-L1d:protocol"
WARNING: There is no parameter named "-L1d:using_traces"
WARNING: There is no parameter named "-L1d:downgrade_lru"
WARNING: There is no parameter named "-L1d:snoop_lru"
WARNING: There is no parameter named "-L1i:mt_width"
WARNING: There is no parameter named "-L1i:size"
WARNING: There is no parameter named "-L1i:assoc"
WARNING: There is no parameter named "-L1i:bsize"
WARNING: There is no parameter named "-L1i:clean_evict"
WARNING: There is no parameter named "-L1i:level"
WARNING: There is no parameter named "-L1i:notify_reads"
WARNING: There is no parameter named "-L1i:notify_writes"
WARNING: There is no parameter named "-L1i:trace_tracker_on"
WARNING: There is no parameter named "-L1i:rsize"
WARNING: There is no parameter named "-L1i:rt_assoc"
WARNING: There is no parameter named "-L1i:rt_size"
WARNING: There is no parameter named "-L1i:rt_repl"
WARNING: There is no parameter named "-L1i:erb_size"
WARNING: There is no parameter named "-L1i:std_array"
WARNING: There is no parameter named "-L1i:block_scout"
WARNING: There is no parameter named "-L1i:skew_block_set"
WARNING: There is no parameter named "-L1i:protocol"
WARNING: There is no parameter named "-L1i:using_traces"
WARNING: There is no parameter named "-L1i:text_flexpoints"
WARNING: There is no parameter named "-L1i:gzip_flexpoints"
WARNING: There is no parameter named "-L1i:downgrade_lru"
WARNING: There is no parameter named "-L1i:snoop_lru"
WARNING: There is no parameter named "-L2:CMPWidth"
WARNING: There is no parameter named "-L2:size"
WARNING: There is no parameter named "-L2:assoc"
WARNING: There is no parameter named "-L2:clean_evict"
21 <configuration.hpp:210> {0}- Bad Lexical Cast attempting to set dynamic parameter.
WARNING: Unable to set parameter CacheLevel to eL2
WARNING: There is no parameter named "-L2:trace_tracker_on"
WARNING: There is no parameter named "-L2:repl"
WARNING: There is no parameter named "-L2:rsize"
WARNING: There is no parameter named "-L2:rt_assoc"
WARNING: There is no parameter named "-L2:rt_size"
WARNING: There is no parameter named "-L2:erb_size"
WARNING: There is no parameter named "-L2:std_array"
WARNING: There is no parameter named "-L2:directory_type"
WARNING: There is no parameter named "-L2:protocol"
WARNING: There is no parameter named "-L2:always_multicast"
WARNING: There is no parameter named "-L2:seperate_id"
WARNING: There is no parameter named "-L2:coherence_unit"
22 <configuration.hpp:210> {0}- Bad Lexical Cast attempting to set dynamic parameter.
WARNING: Unable to set parameter CacheLevel to eL1
23 <configuration.hpp:210> {0}- Bad Lexical Cast attempting to set dynamic parameter.
WARNING: Unable to set parameter CacheLevel to eL2
WARNING: There is no parameter named "-memory:device-file"
WARNING: There is no parameter named "-memory:memory-system-file"
WARNING: There is no parameter named "-memory:interleaving"
WARNING: There is no parameter named "-memory:frequency"
WARNING: There is no parameter named "-memory:dyn_size"
WARNING: There is no parameter named "-memory:size"
WARNING: There is no parameter named "-memory:max_replies"
WARNING: There is no parameter named "-memory:InterconnectDelay"
WARNING: There is no parameter named "-L1d:size"
WARNING: There is no parameter named "-L2:size"
WARNING: There is no parameter named "-L2:assoc"
WARNING: There is no parameter named "-L2:CMPWidth"
WARNING: There is no parameter named "-feeder:CMPwidth"
24 <ComponentManager.cpp:100> {0}- Initializing 16 components...
25 <ComponentManager.cpp:105> {0}- Component 1: Initializing sys-fag
26 <ComponentManager.cpp:105> {0}- Component 2: Initializing sys-ufetch
27 <ComponentManager.cpp:105> {0}- Component 3: Initializing sys-combiner
28 <ComponentManager.cpp:105> {0}- Component 4: Initializing sys-decoder
29 <ComponentManager.cpp:105> {0}- Component 5: Initializing sys-uarcharm
30 <microArch.cpp:151> {0}- sys-uarcharm connected to cpu0
31 <ComponentManager.cpp:105> {0}- Component 6: Initializing sys-L1d
32 <ComponentManager.cpp:105> {0}- Component 7: Initializing sys-mmu
33 <ComponentManager.cpp:105> {0}- Component 8: Initializing sys-L2
34 <CMPCacheImpl.cpp:96> {0}- GroupInterleaving = 4096
35 <NonInclusiveMESIPolicy.cpp:109> {0}- GI = 4096
36 <NonInclusiveMESIPolicy.cpp:88> {0}- GI = 4096
37 <StdArray.hpp:586> {0}- theGroupInterleaving = 4096
38 <StdArray.hpp:695> {0}- blockOffsetBits = 6, indexBits = 11, bankBits = 0, bankInterleavingBits = 6, groupBits = 0, groupInterleavingBits = 12, lowBits = 0, midBits = 6, highBits = 5, setLowMask = 0, setMidMask = 3f, setHighMask = 7c0, setLowShift = 6, setMidShift = 6, setHighShift = 6, theBankMask = 0, theBankShift = 6, theGroupMask = 0, theGroupShift = 12
39 <AbstractCacheController.hpp:77> {0}- sys-L2: created AbstractCacheController 'sys-L2'
40 <ComponentManager.cpp:105> {0}- Component 9: Initializing sys-memory
41 <ComponentManager.cpp:105> {0}- Component 10: Initializing 00-nic
42 <ComponentManager.cpp:105> {0}- Component 11: Initializing 01-nic
43 <ComponentManager.cpp:105> {0}- Component 12: Initializing 02-nic
44 <ComponentManager.cpp:105> {0}- Component 13: Initializing sys-network
Attaching node 0 to switch 0:0
Attaching node 1 to switch 0:1
Attaching node 2 to switch 0:2
WARNING: switch 0 port 3 left unused (may be safe)
WARNING: switch 0 port 4 left unused (may be safe)
WARNING: switch 0 port 5 left unused (may be safe)
WARNING: switch 0 port 6 left unused (may be safe)
45 <ComponentManager.cpp:105> {0}- Component 14: Initializing sys-memory-map
46 <ComponentManager.cpp:105> {0}- Component 15: Initializing sys-magic-break
47 <ComponentManager.cpp:105> {0}- Component 16: Initializing sys-net-mapper
48 <SplitDestinationMapperImpl.cpp:145> {0}- Creating SplitDestinationMapper with 1 cores, 1 directories, and 1 memory controllers.
49 <ValueTracker.hpp:240> {233}- ALEX -- WARNING: DMA tracker has not been set up (Needs to be fixed)

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3dbc241 in __pth_scheduler () from /root/lib/libpth.so.20
(gdb) bt
#0  0x00007ffff3dbc241 in __pth_scheduler () at /root/lib/libpth.so.20
#1  0x00007ffff3dbda80 in pth_spawn_trampoline () at /root/lib/libpth.so.20
#2  0x00007ffff279b7b0 in __start_context () at /lib/x86_64-linux-gnu/libc.so.6
#3  0x0000000000000000 in  ()

I compiled pth with debug mode and error is below.

================== THREAD CONTEXT SWITCH ===========================================
23283:pth_sched.c:0320: Finished switch back to pth_sched stack 0x555556755350, size 65536, FROM stack 0x0, size 0
23283:pth_sched.c:0325: pth_scheduler: cameback from thread 0x5555568fdda0 ("unknown")
23283:pth_sched.c:0334: pth_scheduler: thread "unknown" ran 0.160900

Program received signal SIGSEGV, Segmentation fault.
__pth_scheduler (dummy=<optimized out>) at pth_sched.c:370
370                 if (*pth_current->stackguard != 0xDEAD) {
(gdb) bt
#0  0x00007ffff3db7937 in __pth_scheduler (dummy=<optimized out>) at pth_sched.c:370
#1  0x00007ffff3db99d0 in pth_spawn_trampoline () at pth_lib.c:271
#2  0x00007ffff27967b0 in __start_context () at /lib/x86_64-linux-gnu/libc.so.6
#3  0x0000000000000000 in  ()

Additionally, build_qemu.sh calls build_pth.sh to generate libpth.so.
I ran ./build_qemu.sh -timing but an error hanppened.

  CC      chardev/char-udp.o
  LINK    tests/qemu-iotests/socket_scm_helper
  CC      qga/commands.o
/usr/bin/ld: cannot find -lpth
collect2: error: ld returned 1 exit status
/home/s00523304/qflex/qflex/qemu/rules.mak:121: recipe for target 'tests/qemu-iotests/socket_scm_helper' failed
make: *** [tests/qemu-iotests/socket_scm_helper] Error 1
make: *** Waiting for unfinished jobs....
  AS      optionrom/multiboot.o
  CC      optionrom/linuxboot_dma.o

So I first ran ./build_pth.sh then ran ./build_qemu.sh -timing and there was no error.
Does the uncorrect order result in my first error “Segmentation fault”?

Collect all available documentation

QFlex development has been spread across a good decade. Sadly, knowledge transfer, documentation, research papers and purpose followed the same path. To understand better the legacy, and technical complexity of QFlex, acquiring and grouping all documentation in one place is a non-negligible part of the documentation process.

  • Get the related paper
  • Get the related meetings slides
  • Get the related technical documentation

mrun does not take care of iptables

Description

If the host machine has iptables enabled, then mrun wont guaranty connectivity between Qemu instances and in case iptables FORWARD Chain is not capable of forwarding the ns3 network packets the network between Qemu instances doesn't work.

How to reproduce

To reproduce this issue it is enough to configure iptables in a way it drops or rejects packets which are assumed to be forwarded and then try to run multiple Qemu instances with mrun configured to be run in an ns3 network.

Proposed Solutions

  1. Add a piece of code in mrun after bringing up the bridges to add ACCEPT forwarding rules to iptables and remove these rules while tearing down the network.
  2. Add an administrative gotcha in documentation or mrun help.

Also there's a workaround to overcome this issue by disabling iptables for Linux bridges. Which can be done like the following:
~# echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

Further Details

I am currently using the commit 4d938fa97c6984ab3d5f7c9b52f890ecfec72593 from qflex and I have already pulled images from install-docker-update branch of the images sub-module.

I am using this command to run the multiple Qemu instances:
~# ./mrun -r qemu-setup-sample-file.xml -qmp -ns /home/aasgari/Documents/qflex/3rdparty/ns3

My mrun configuration files are like these:

<!-- qemu-setup-sample-file.xml -->
<setup>
    <instance>
        <file>/home/aasgari/Documents/qflex/scripts/mrun/q1.xml</file>
    </instance>
        <instance>
        <file>/home/aasgari/Documents/qflex/scripts/mrun/q2.xml</file>
    </instance>
</setup>
<!-- /home/aasgari/Documents/qflex/scripts/mrun/q1.xml -->
<instance>
    <executable>
        <binary>/home/aasgari/Documents/qflex/qemu/aarch64-softmmu/qemu-system-aarch64</binary>
    </executable>
    <parameter>
        <enabled>on</enabled>
        <option>-machine</option>
        <arg>virt</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-cpu</option>
        <arg>cortex-a57</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-smp</option>
        <arg>4
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-m</option>
        <arg>2000</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-kernel</option>
        <arg>/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/vmlinuz-4.4.0-83-generic
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-initrd</option>
        <arg>/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/initrd.img-4.4.0-83-generic-DockerInstalled</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-append</option>
        <arg>'root=/dev/sda2'
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-global</option>
        <arg>virtio-blk-device.scsi=off</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>virtio-scsi-device,id=scsi
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-drive</option>
        <arg>
            file=/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/ubuntu-16.04-lts-blank.qcow2,id=rootimg,cache=unsafe,if=none
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>scsi-hd,drive=rootimg</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-rtc</option>
        <arg>driftfix=slew</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-serial</option>
        <arg>telnet:localhost:5555,server,nowait</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-name</option>
        <arg>q1</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-accel</option>
        <arg>tcg,thread=single</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-nographic</option>
        <arg>
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-netdev</option>
        <arg>user,id=net1,hostfwd=tcp::2222-:22</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>virtio-net-device,mac=52:54:00:00:02:12,netdev=net1</arg>
    </parameter>
        <parameter>
        <enabled>on</enabled>
        <option>-exton</option>
        <arg></arg>
    </parameter>
</instance>
<!-- /home/aasgari/Documents/qflex/scripts/mrun/q2.xml -->
<instance>
    <executable>
        <binary>/home/aasgari/Documents/qflex/qemu/aarch64-softmmu/qemu-system-aarch64</binary>
    </executable>
    <parameter>
        <enabled>on</enabled>
        <option>-machine</option>
        <arg>virt</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-cpu</option>
        <arg>cortex-a57</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-smp</option>
        <arg>4
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-m</option>
        <arg>2000</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-kernel</option>
        <arg>/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/vmlinuz-4.4.0-83-generic
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-initrd</option>
        <arg>/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/initrd.img-4.4.0-83-generic-DockerInstalled</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-append</option>
        <arg>'root=/dev/sda2'
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-global</option>
        <arg>virtio-blk-device.scsi=off</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>virtio-scsi-device,id=scsi
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-drive</option>
        <arg>
            file=/home/aasgari/Documents/qflex/images/ubuntu-16.04-blank/ubuntu-16.04-lts-blank.qcow2,id=rootimg,cache=unsafe,if=none
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>scsi-hd,drive=rootimg</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-rtc</option>
        <arg>driftfix=slew</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-serial</option>
        <arg>telnet:localhost:5556,server,nowait</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-name</option>
        <arg>q2</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-accel</option>
        <arg>tcg,thread=single</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-nographic</option>
        <arg>
        </arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-netdev</option>
        <arg>user,id=net1,hostfwd=tcp::2221-:22</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-device</option>
        <arg>virtio-net-device,mac=52:54:00:00:02:13,netdev=net1</arg>
    </parameter>
    <parameter>
        <enabled>on</enabled>
        <option>-exton</option>
        <arg></arg>
    </parameter>
</instance>

Also the output from ~# iptables -L -v which contains iptables rules and stats, for the FORWARD chain after sending 10000 UDP packets from one of the Qemu instances to the other just after the operation was done and having it reset before the operation is the following (I had already initialized eth0 for each Qemu instance with local IPs and used echo hello > /dev/udp/[other qemu IP]/[port] to send the UDP packets):

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
10000  340K DOCKER-USER  all  --  any    any     anywhere             anywhere            
10000  340K DOCKER-ISOLATION-STAGE-1  all  --  any    any     anywhere             anywhere            
    0     0 ACCEPT     all  --  any    docker0  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  any    docker0  anywhere             anywhere            
    0     0 ACCEPT     all  --  docker0 !docker0  anywhere             anywhere            
    0     0 ACCEPT     all  --  docker0 docker0  anywhere             anywhere            
    0     0 ACCEPT     all  --  any    br-e68495d486fc  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  any    br-e68495d486fc  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-e68495d486fc !br-e68495d486fc  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-e68495d486fc br-e68495d486fc  anywhere             anywhere            
    0     0 ACCEPT     all  --  any    br-dc42555c70a5  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  any    br-dc42555c70a5  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-dc42555c70a5 !br-dc42555c70a5  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-dc42555c70a5 br-dc42555c70a5  anywhere             anywhere            
    0     0 ACCEPT     all  --  any    br-993cfd405bb4  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  any    br-993cfd405bb4  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-993cfd405bb4 !br-993cfd405bb4  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-993cfd405bb4 br-993cfd405bb4  anywhere             anywhere            
    0     0 ACCEPT     all  --  any    br-42830f4fa203  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  any    br-42830f4fa203  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-42830f4fa203 !br-42830f4fa203  anywhere             anywhere            
    0     0 ACCEPT     all  --  br-42830f4fa203 br-42830f4fa203  anywhere             anywhere            
    0     0 ACCEPT     all  --  any    virbr0  anywhere             192.168.122.0/24     ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 any     192.168.122.0/24     anywhere            
    0     0 ACCEPT     all  --  virbr0 virbr0  anywhere             anywhere            
    0     0 REJECT     all  --  any    virbr0  anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 any     anywhere             anywhere             reject-with icmp-port-unreachable
    0     0 ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
10000  340K FORWARD_direct  all  --  any    any     anywhere             anywhere            
10000  340K FORWARD_IN_ZONES_SOURCE  all  --  any    any     anywhere             anywhere            
10000  340K FORWARD_IN_ZONES  all  --  any    any     anywhere             anywhere            
10000  340K FORWARD_OUT_ZONES_SOURCE  all  --  any    any     anywhere             anywhere            
10000  340K FORWARD_OUT_ZONES  all  --  any    any     anywhere             anywhere            
    0     0 DROP       all  --  any    any     anywhere             anywhere             ctstate INVALID
10000  340K REJECT     all  --  any    any     anywhere             anywhere             reject-with icmp-host-prohibited

Which sounds like the last rule is applied and the UDP packets are rejected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.