unicorn icon indicating copy to clipboard operation
unicorn copied to clipboard

Uncaught exceptions when using Unicorn concurrently

Open jhhcs opened this issue 3 months ago • 3 comments

Hey! I am maintaining a downstream project that was using

2.0.1.post1

until recently. I have now upgraded to the most recent release:

2.1.4

This has gone through without problems for my test suites on but the Windows runners also report a barrage of exceptions. I can reproduce these locally and have isolated the error output below.

Very notably, I use pytest-xdist to execute these tests in parallel. These errors do not occur when the test suite is executed in a single thread. It can be reproduced with the following code:

import unittest

import unicorn as uc
import unicorn.x86_const as x86

from unicorn.unicorn import Uc


def hook_mem_error(emu: Uc, access: int, address: int, size: int, value: int):
    aligned = address & ~0xFFF
    alloc_size = 0
    while address + size >= aligned + alloc_size:
        alloc_size += 0x1000
    emu.mem_map(aligned, alloc_size)
    return True


def hook_mem_read(emu: Uc, access: int, address: int, size: int, value: int) -> bool:
    print(F'{address:#016x} >> {value:#0{2 * size}x}')
    return True


def hook_mem_write(emu: Uc, access: int, address: int, size: int, value: int) -> bool:
    print(F'{address:#016x} << {value:#0{2 * size}x}')
    return True


CODE = bytes.fromhex(
    'B8 02 00 00 00'        # mov     eax, 2
    '66 89 05 19 DC 01 00'  # mov     [eip+0x1DC19], ax
    '66 B9 92 13'           # mov     cx, 0x1392
    'FF 15 AF 11 01 00'     # call    htons
    '66 89 05 0A DC 01 00'  # mov     [eip+0x1DC0A], ax
)


class Test(unittest.TestCase):

    def _emulator_test(self):
        mu = Uc(uc.UC_ARCH_X86, uc.UC_MODE_64)
        mu.mem_map(0, 0x1000)
        mu.mem_write(0, CODE)

        stack_len = 0x3000
        stack_top = 0x7fffffffffffc000
        stack_ptr = 0x7fffffffffffe000

        ip = 0

        mu.mem_map(stack_top, stack_len)
        mu.reg_write(x86.UC_X86_REG_RSP, stack_ptr)
        mu.reg_write(x86.UC_X86_REG_RIP, ip)

        mu.hook_add(uc.UC_HOOK_MEM_READ, hook_mem_read)
        mu.hook_add(uc.UC_HOOK_MEM_WRITE, hook_mem_write)
        mu.hook_add(uc.UC_HOOK_MEM_INVALID, hook_mem_error)

        mu.emu_start(ip, 5)
        ip = mu.reg_read(x86.UC_X86_REG_RIP)

        self.assertEqual(ip, 5)

    def test_uc1(self): self._emulator_test()
    def test_uc2(self): self._emulator_test()
    def test_uc3(self): self._emulator_test()
    def test_uc4(self): self._emulator_test()
    def test_uc5(self): self._emulator_test()
    def test_uc6(self): self._emulator_test()
    def test_uc7(self): self._emulator_test()
    def test_uc8(self): self._emulator_test()

Running

pytest -n 4 test 2>test.errors

produces the following output for me:

Windows fatal exception: access violation

Thread 0x00003338 (most recent call first):
  File "C:\Workspace\projects\refinery-mvp\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File Windows fatal exception: access violation

Thread 0x00002f28 (most recent call first):
"X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x000041b4 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 69 in test_uc7
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py"Windows fatal exception:   File Windows fatal exception: access violation

"X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x00000514 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 63 in test_uc1
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>
Thread 0x000024d4 (most recent call first):
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341, line  in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411121 in _perform_spawn

Current thread 0x00000740 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 67 in test_uc5
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File  in "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File Windows fatal exception: access violation

Thread 0x00003338 (most recent call first):
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
access violation

  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver_multicall"X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>
Thread 0x0000317c (most recent call first):


  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x000041b4 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 70 in test_uc8
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x00005634 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 65 in test_uc3
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File Windows fatal exception: access violation

Thread 0x000024d4 (most recent call first):
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x00000740 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 68 in test_uc6
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
"  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py" in X:\test\venv\Lib\site-packages\xdist\remote.py  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "runtest", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>

  File , line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py"X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>
X:\test\venv\Lib\site-packages\_pytest\runner.py"", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File , line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py""X:\test\venv\Lib\site-packages\xdist\remote.py", line 427 in <module>
, line   File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>
121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicallWindows fatal exception: access violation

Thread 0x0000317c (most recent call first):
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
Windows fatal exception:   File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x00005634 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 66 in test_uc4
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in 
__call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py"access violation, line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>


Thread 0x00002f28 (most recent call first):
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 534 in read
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 567 in from_io
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1160 in _thread_receiver
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn

Current thread 0x00000514 (most recent call first):
  File "X:\test\venv\Lib\site-packages\unicorn\unicorn_py3\unicorn.py", line 831 in mem_map
  File "X:\test\test\test_unicorn.py", line 41 in _emulator_test
  File "X:\test\test\test_unicorn.py", line 64 in test_uc2
  File "C:\Python314\Lib\unittest\case.py", line 615 in _callTestMethod
  File "C:\Python314\Lib\unittest\case.py", line 669 in run
  File "C:\Python314\Lib\unittest\case.py", line 725 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\unittest.py", line 389 in runtest
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 179 in pytest_runtest_call
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 245 in <lambda>
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 353 in from_call
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 244 in call_and_report
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 137 in runtestprotocol
  File "X:\test\venv\Lib\site-packages\_pytest\runner.py", line 118 in pytest_runtest_protocol
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 227 in run_one_test
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 206 in pytest_runtestloop
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 372 in _main
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 318 in wrap_session
  File "X:\test\venv\Lib\site-packages\_pytest\main.py", line 365 in pytest_cmdline_main
  File "X:\test\venv\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
  File "X:\test\venv\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
  File "X:\test\venv\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
  File "X:\test\venv\Lib\site-packages\xdist\remote.py", line 427 in <module>
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1291 in executetask
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 341 in run
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 411 in _perform_spawn
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 389 in integrate_as_primary_thread
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1273 in serve
  File "X:\test\venv\Lib\site-packages\execnet\gateway_base.py", line 1806 in serve
  File "<string>", line 8 in <module>
  File "<string>", line 1 in <module>

Current thread's C stack trace (most recent call first):
  <cannot get C stack on this system>

jhhcs avatar Nov 20 '25 16:11 jhhcs

Is it possible that it simply runs out of memory? We (Qiling) once had exactly the same issue and we resolved it with https://github.com/al-cheb/configure-pagefile-action

wtdcode avatar Nov 25 '25 16:11 wtdcode

That's a good idea, thank you, but that's not it. My local setup has 64GB and I checked: The MVP I posted above doesn't even scratch the surface of that (neither does my actual test suite for that matter).

jhhcs avatar Nov 25 '25 19:11 jhhcs

I can confirm there's a issue using emulator concurrently, even with different instances. I'm on C++ and with 2 threads running in tight fast loops, there are randomic ACCESS_VIOLATION exceptions. If I throttle the loop a little bit, exceptions disappear. This could mean that there's a race condition over shared memory between uc instances. Tested with both 2.1.4 and "master" branch

Ottavio97 avatar Dec 08 '25 06:12 Ottavio97