Walkingmind / embox

Automatically exported from code.google.com/p/embox
2 stars 0 forks source link

vfork lags with -O2 #698

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1.r14527, x86/nonvga_debug
2.patch build.conf & config.mods
$ svn diff templates/
Index: templates/x86/nonvga_debug/build.conf
===================================================================
--- templates/x86/nonvga_debug/build.conf   (revision 14527)
+++ templates/x86/nonvga_debug/build.conf   (working copy)
@@ -1,7 +1,7 @@
 TARGET = embox
 ARCH = x86

-CFLAGS += -O0 -gdwarf-2
+CFLAGS += -O2 -gdwarf-2
 CFLAGS += -nostdinc -m32 -march=i386 -fno-stack-protector -Wno-array-bounds

 LDFLAGS += -N -g -m elf_i386
Index: templates/x86/nonvga_debug/mods.config
===================================================================
--- templates/x86/nonvga_debug/mods.config  (revision 14527)
+++ templates/x86/nonvga_debug/mods.config  (working copy)
@@ -5,7 +5,11 @@
    @Runlevel(2) include embox.arch.x86.kernel.locore
    @Runlevel(2) include embox.arch.x86.kernel.context
    @Runlevel(2) include embox.arch.x86.kernel.interrupt
+   include embox.arch.x86.vfork

+   include embox.compat.posix.proc.vfork_stop_parent
+   include embox.compat.posix.proc.exec_stop_parent
+
    @Runlevel(2) include embox.arch.x86.stackframe
    @Runlevel(2) include embox.lib.debug.whereami

@@ -41,41 +45,9 @@
    include embox.kernel.thread.signal.siginfoq

+   include embox.test.posix.vfork_test
    @Runlevel(1) include embox.test.critical
-   @Runlevel(1) include embox.test.gcc.int_arithmetic
-   @Runlevel(1) include embox.test.framework.mod.member.ops_test
-   @Runlevel(1) include embox.test.kernel.softirq_test
-   @Runlevel(1) include embox.test.kernel.timer_test
-   @Runlevel(1) include embox.test.kernel.task.multitask_test
-   @Runlevel(1) include embox.test.recursion
-   @Runlevel(1) include embox.test.posix.sleep_test
-   @Runlevel(1) include embox.test.stdio.printf_test
-   @Runlevel(1) include embox.test.posix.getopt_test
-   @Runlevel(1) include embox.test.posix.poll_test
-   @Runlevel(1) include embox.test.posix.select_test
-   @Runlevel(1) include embox.test.posix.pipe_test
-   @Runlevel(1) include embox.test.posix.ppty_test
-   @Runlevel(1) include embox.test.stdlib.bsearch_test
-   @Runlevel(1) include embox.test.stdlib.qsort_test
-   @Runlevel(1) include embox.test.posix.environ_test
-   @Runlevel(1) include embox.test.posix.getopt_test
-   @Runlevel(1) include embox.test.block_dev.ramdisk_test
-   @Runlevel(1) include embox.test.util.array_test
-   @Runlevel(1) include embox.test.util.bit_test
-   @Runlevel(1) include embox.test.util.list_test
-   @Runlevel(1) include embox.test.util.slist_test
-   @Runlevel(1) include embox.test.util.tree_test
-   @Runlevel(1) include embox.test.util.indexator_test
-   @Runlevel(1) include embox.test.math.math_test
-   @Runlevel(1) include embox.test.mem.pool_test
-   @Runlevel(1) include embox.test.mem.heap
-   @Runlevel(1) include embox.test.kernel.thread.thread_test
    include embox.kernel.timer.sys_timer(timer_quantity=512) // each sleep thread requires a timer
-   @Runlevel(1) include embox.test.kernel.thread.thread_priority_test
-   @Runlevel(1) include embox.test.kernel.lthread.lthread_test
-   @Runlevel(1) include embox.test.net.parser.url_parser_test
-   @Runlevel(1) include embox.test.net.parser.request_parser_test
-   @Runlevel(1) include embox.test.third_party.trex_test

    @Runlevel(2) include embox.cmd.sh.tish(prompt="%u@%h:%w%$", rich_prompt_support=1, builtin_commands="exit logout cd export mount umount")
    @Runlevel(3) include embox.init.start_script(shell_name="tish", tty_dev="ttyS0", shell_start=1)
@@ -93,7 +65,7 @@
    include embox.cmd.net.snmpd
    include embox.cmd.net.ntpdate
    include embox.cmd.net.bootpc
-   include embox.cmd.net.httpd
+   include embox.cmd.net.httpd(use_cgi=true)
    include embox.cmd.net.servd
    include embox.cmd.net.telnetd
    include embox.cmd.net.nslookup
@@ -159,7 +131,7 @@
    @Runlevel(2) include embox.net.core
    @Runlevel(2) include embox.net.skbuff(amount_skb=4000,
            amount_skb_data=4000,data_size=1514,data_align=1,data_padto=1,ip_align=false,
-           amount_skb_extra=128,extra_size=10,extra_align=1,extra_padto=1)
+           amount_skb_extra=4000,extra_size=10,extra_align=1,extra_padto=1)
    @Runlevel(2) include embox.net.socket
    @Runlevel(2) include embox.net.dev
    @Runlevel(2) include embox.net.af_inet
What is the expected output? What do you see instead?

Please use labels and text to provide additional information.
$ ./scripts/qemu/auto_qemu 
Guessed AUTOQEMU_ARCH is: x86
Guessed AUTOQEMU_MEM is: 256
Guessed AUTOQEMU_NICS is: virtio
Guessed AUTOQEMU_KVM_ARG is: -enable-kvm
Guessed AUTOQEMU_LOAD_ARG is: -kernel ./build/base/bin/embox
Guessed AUTOQEMU_NOGRAPHIC_ARG is: -nographic
sudo qemu-system-i386 -kernel ./build/base/bin/embox -enable-kvm -m 256 -net 
nic,model=virtio,macaddr=AA:BB:CC:DD:EE:02 -net 
tap,script=./scripts/qemu/start_script,downscript=./scripts/qemu/stop_script 
-nographic
ioctl(TUNSETIFF): Device or resource busy
Enable IP Forwarding for eth0
net.ipv4.ip_forward = 1

Embox kernel start
runlevel: init level is 0
    unit: initializing embox.driver.interrupt.i8259: done
    unit: initializing embox.mem.static_heap: done
    unit: initializing embox.kernel.task.task_resource: done
    unit: initializing embox.kernel.task.task_table: done
    unit: initializing embox.driver.clock.pit: done
    unit: initializing embox.kernel.task.kernel_task: done
    unit: initializing embox.kernel.time.jiffies: done
    unit: initializing embox.kernel.thread.starter: done
    unit: initializing embox.kernel.time.timer: done
    unit: initializing embox.fs.driver.repo: done
    unit: initializing embox.mem.phymem: start=0x09257000, end=0x10100000, size=116035584
done
    unit: initializing embox.fs.buffer_cache: done
    unit: initializing embox.fs.node: done
    unit: initializing embox.driver.block: done
    unit: initializing embox.fs.rootfs: initfs_mount: unpack initinitfs at 0x001c4960 into /
done
    unit: initializing embox.kernel.time.kernel_time: done
    test: running embox.test.critical .. done
    unit: initializing embox.driver.ide: done
runlevel: init level is 1
    unit: initializing third_party.lib.acpica: done
    unit: initializing embox.kernel.time.timekeeper: done
    unit: initializing embox.net.dev: done
    unit: initializing embox.net.net_entry: done
    unit: initializing embox.net.neighbour: done
    unit: initializing embox.net.tcp: done
    unit: initializing embox.driver.pci: done
    unit: initializing embox.driver.net.loopback: done
    unit: initializing embox.profiler.tracing: done
    test: running embox.test.posix.vfork_test ..
    failure at src/tests/posix/vfork_test.c : 57, in function __test_case_at_line_39
        test_assert_equal(data, 2)
       case at src/tests/posix/vfork_test.c : 39
        "parent should see stack modifications made from child"
    .
    testing vfork_test (vfork() testsuite) failed
        1/4 failures
Failed to get into level 2, current level 1

Original issue reported on code.google.com by ki.stfu on 6 Aug 2014 at 10:07

GoogleCodeExporter commented 9 years ago
fixed in r14555

Original comment by drakon.m...@gmail.com on 8 Aug 2014 at 8:33