先上结论:不要使用Archlinux WSL

重要的事情说三遍:

  1. 不要使用Archlinux WSL
  2. 不要使用Archlinux WSL
  3. 不要使用Archlinux WSL

看看Archlinux on WSL? / Other Architectures / Arch Linux Forums中大伙的评论:

官方和社区都不支持,那还玩啥?

问题

下面给出一个我在使用ArchLinux WSL中遇到的问题:

当使用python运行一个使用了Cpython的脚本时,引发了segment fault,显示保存信息极少。使用gdb python然后run <script.py>进行调试,然后backtrace

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007fffcc488f3a in std::basic_ostream<char, std::char_traits<char> >::sentry::sentry (this=0x7fffffffc980, __os=...)
at /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:51
51 /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream.tcc: No such file or directory.
(gdb) run fill_time.py
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/jkup/.conda/envs/quant/bin/python fill_time.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff45ff6c0 (LWP 3265)]
[New Thread 0x7ffff1dfe6c0 (LWP 3266)]
[New Thread 0x7fffef5fd6c0 (LWP 3267)]
[New Thread 0x7fffecdfc6c0 (LWP 3268)]
[New Thread 0x7fffec5fb6c0 (LWP 3269)]
[New Thread 0x7fffe7dfa6c0 (LWP 3270)]
[New Thread 0x7fffe55f96c0 (LWP 3271)]
[New Thread 0x7fffe2df86c0 (LWP 3272)]
[New Thread 0x7fffe05f76c0 (LWP 3273)]
[New Thread 0x7fffdddf66c0 (LWP 3274)]
[New Thread 0x7fffdb5f56c0 (LWP 3275)]
[New Thread 0x7fffd8df46c0 (LWP 3276)]
[New Thread 0x7fffd65f36c0 (LWP 3277)]
[New Thread 0x7fffd3df26c0 (LWP 3278)]
[New Thread 0x7fffd35f16c0 (LWP 3279)]

Thread 1 "python" received signal SIGSEGV, Segmentation fault.
0x00007fffcc488f3a in std::basic_ostream<char, std::char_traits<char> >::sentry::sentry (this=0x7fffffffc980, __os=...)
at /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:51
51 /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream.tcc: No such file or directory.
(gdb) backtrace
#0 0x00007fffcc488f3a in std::basic_ostream<char, std::char_traits<char> >::sentry::sentry (this=0x7fffffffc980, __os=...)
at /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream.tcc:51
#1 0x00007fffcc48967c in std::__ostream_insert<char, std::char_traits<char> > (__out=..., __s=0x7fffcbc27573 "on ", __n=3)
at /opt/conda/conda-bld/gcc-compiler_1654084175708/work/build/gcc-final/x86_64-conda-linux-gnu/libstdc++-v3/include/bits/ostream_insert.h:83
#2 0x00007fffcbc24e6b in OrderBook::on_order(int, int, int, int, int, int, int, bool) () from /home/jkup/Quant/cython_orderbook-master/odb.cpython-310-x86_64-linux-gnu.so
#3 0x00007fffcbc21f93 in __pyx_pw_3odb_11PyOrderBook_7on_order(_object*, _object* const*, long, _object*) () from /home/jkup/Quant/cython_orderbook-master/odb.cpython-310-x86_64-linux-gnu.so
#4 0x000000000050825a in _PyObject_VectorcallTstate (kwnames=<optimized out>, nargsf=<optimized out>, args=<optimized out>, callable=0x7fffcbc41e50, tstate=0x75b780)
at /usr/local/src/conda/python-3.10.13/Include/cpython/abstract.h:114
#5 method_vectorcall (method=<optimized out>, args=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/local/src/conda/python-3.10.13/Objects/classobject.c:83
#6 0x00000000004efb19 in do_call_core (kwdict=0x0, callargs=0x7fffc6a525e0, func=0x7fffcb0a8c00, trace_info=0x7fffffffccc0, tstate=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5945
#7 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7fffcb252dc0, throwflag=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:4277
#8 0x00000000004fcadf in _PyEval_EvalFrame (throwflag=0, f=0x7fffcb252dc0, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Include/internal/pycore_ceval.h:46
#9 _PyEval_Vector (kwnames=<optimized out>, argcount=<optimized out>, args=<optimized out>, locals=0x0, con=0x7fffcb53d6d0, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5067
#10 _PyFunction_Vectorcall (func=0x7fffcb53d6c0, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/local/src/conda/python-3.10.13/Objects/call.c:342
#11 0x00000000004ed2bf in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x16433d0, callable=0x7fffcb53d6c0, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Include/cpython/abstract.h:114
#12 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x16433d0, callable=0x7fffcb53d6c0) at /usr/local/src/conda/python-3.10.13/Include/cpython/abstract.h:123
#13 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, trace_info=0x7fffffffce80, tstate=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5893
#14 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x1643140, throwflag=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:4213
#15 0x00000000004fcadf in _PyEval_EvalFrame (throwflag=0, f=0x1643140, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Include/internal/pycore_ceval.h:46
#16 _PyEval_Vector (kwnames=<optimized out>, argcount=<optimized out>, args=<optimized out>, locals=0x0, con=0x7fffcbcb91c0, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5067
#17 _PyFunction_Vectorcall (func=0x7fffcbcb91b0, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>) at /usr/local/src/conda/python-3.10.13/Objects/call.c:342
#18 0x00000000004ee353 in _PyObject_VectorcallTstate (kwnames=0x7ffff78a35e0, nargsf=<optimized out>, args=<optimized out>, callable=0x7fffcbcb91b0, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Include/cpython/abstract.h:114
#19 PyObject_Vectorcall (kwnames=0x7ffff78a35e0, nargsf=<optimized out>, args=<optimized out>, callable=0x7fffcbcb91b0) at /usr/local/src/conda/python-3.10.13/Include/cpython/abstract.h:123
#20 call_function (kwnames=0x7ffff78a35e0, oparg=<optimized out>, pp_stack=<synthetic pointer>, trace_info=0x7fffffffd040, tstate=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5893
#21 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=0x7ffff791da40, throwflag=<optimized out>) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:4231
#22 0x0000000000591d92 in _PyEval_EvalFrame (throwflag=0, f=0x7ffff791da40, tstate=0x75b780) at /usr/local/src/conda/python-3.10.13/Include/internal/pycore_ceval.h:46
#23 _PyEval_Vector (tstate=tstate@entry=0x75b780, con=con@entry=0x7fffffffd140, locals=locals@entry=0x7ffff7835480, args=args@entry=0x0, argcount=argcount@entry=0, kwnames=kwnames@entry=0x0)
at /usr/local/src/conda/python-3.10.13/Python/ceval.c:5067
#24 0x0000000000591cd7 in PyEval_EvalCode (co=co@entry=0x7ffff7877b50, globals=globals@entry=0x7ffff7835480, locals=locals@entry=0x7ffff7835480) at /usr/local/src/conda/python-3.10.13/Python/ceval.c:1134
#25 0x00000000005c2967 in run_eval_code_obj (tstate=tstate@entry=0x75b780, co=co@entry=0x7ffff7877b50, globals=globals@entry=0x7ffff7835480, locals=locals@entry=0x7ffff7835480)
at /usr/local/src/conda/python-3.10.13/Python/pythonrun.c:1291
#26 0x00000000005bdad0 in run_mod (mod=mod@entry=0x899e28, filename=filename@entry=0x7ffff7838340, globals=globals@entry=0x7ffff7835480, locals=locals@entry=0x7ffff7835480, flags=flags@entry=0x7fffffffd338,
arena=arena@entry=0x7ffff78f7b90) at /usr/local/src/conda/python-3.10.13/Python/pythonrun.c:1312
#27 0x000000000045956b in pyrun_file (fp=fp@entry=0x757470, filename=filename@entry=0x7ffff7838340, start=start@entry=257, globals=globals@entry=0x7ffff7835480, locals=locals@entry=0x7ffff7835480, closeit=closeit@entry=1,
flags=0x7fffffffd338) at /usr/local/src/conda/python-3.10.13/Python/pythonrun.c:1208
#28 0x00000000005b805f in _PyRun_SimpleFileObject (fp=0x757470, filename=0x7ffff7838340, closeit=1, flags=0x7fffffffd338) at /usr/local/src/conda/python-3.10.13/Python/pythonrun.c:456
#29 0x00000000005b7dc3 in _PyRun_AnyFileObject (fp=0x757470, filename=filename@entry=0x7ffff7838340, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffd338) at /usr/local/src/conda/python-3.10.13/Python/pythonrun.c:90
#30 0x00000000005b4b7d in pymain_run_file_obj (skip_source_first_line=0, filename=0x7ffff7838340, program_name=0x7ffff785ce70) at /usr/local/src/conda/python-3.10.13/Modules/main.c:357
#31 pymain_run_file (config=0x7825a0) at /usr/local/src/conda/python-3.10.13/Modules/main.c:376
#32 pymain_run_python (exitcode=0x7fffffffd330) at /usr/local/src/conda/python-3.10.13/Modules/main.c:591
#33 Py_RunMain () at /usr/local/src/conda/python-3.10.13/Modules/main.c:670
#34 0x0000000000584e49 in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/local/src/conda/python-3.10.13/Modules/main.c:1090
#35 0x00007ffff7d04cd0 in __libc_start_call_main (main=main@entry=0x584e00 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffd568) at ../sysdeps/nptl/libc_start_call_main.h:58
#36 0x00007ffff7d04d8a in __libc_start_main_impl (main=0x584e00 <main>, argc=2, argv=0x7fffffffd568, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd558) at ../csu/libc-start.c:360
--Type <RET> for more, q to quit, c to continue without paging--
#37 0x0000000000584cfe in _start ()

谷歌一圈,解决方案较少,并没有找到合适的解决方案。本来以为可能是使用yay安装到/opt下导致内存限制的问题。但重新在用户家目录下安装miniconda并未解决问题。

之前使用Archlinux也遇到过不少问题,但都可以在Arch Wiki下找到答案,而且很多是由于更新软件包时不看提示信息导致的,这次搜索没有看到明显的有效信息。

既然官方和社区都不支持Archlinux Wsl,那就卸了吧,继续使用“邪恶混沌”的Ubuntu。

(虽然之前在做CMU15-213的Bomblab还是AttackLab时,在Ubuntu时运行程序也有问题,在Debian下没有问题……不过WSL还是要比VMware用着方便,将就着用吧)