Segfault on startup

I am running Anki on Arch Linux. I have installed it using the AUR anki-bin package which took care of all dependencies.

When I launch it I get a segementation fault:

[ anki-bin ] $ anki                                                                                       
Python module pip_system_certs is not installed. System certificate store and custom SSL certificates may 
not work. See: https://github.com/ankitects/anki/issues/3016
Starting Anki 25.09.2...
Segmentation fault         (core dumped) anki

I can send the coredump to whoever is best able to look at it. The forum will not allow me to upload the coredump file.

Thanks!

Can you copy and paste the text instead (in a code block)?

We are contributors, so there is no single person that is best able to look at it.

What text? It’s a 28Kb zst-compressed coredump file caused by the python3 binary crashing.

1 Like

Oh, I see. Maybe you could upload it somewhere (e.g. on github if you have that) and link it here?

You could also convert it and paste the output of the command xxd -plain INPUT_FILE > OUTPUT_FILE, which we then could convert back using xxd -plain -revert INPUT_FILE > OUTPUT_FILE. Though I’m not sure if this works outside of linux. Edit: if you convert it, please add the original file name extension as well when you answer, just in case.

I can’t post it here because I get a message that the post is too big.

I put it on my google drive:

https://drive.google.com/file/d/1SJNY5CixC3Nq6AKF42QWO4DTeEIAVF4I/view?usp=sharing

This is completely absurd. Why is the forum being used as a bug tracker instead of the github issue tracker? The forum doesn’t even let you post links.

The Forum is used for triage, since often things that users experience as “bugs” aren’t actually that – or aren’t fixable within the confines of Anki’s code.

We limit what brand new accounts can post here so that we aren’t inundated with spam (annoying or malicious) – and we limit what links can be posted for similar reasons. The best workaround is posting your link in a code/preformatted-text block so it can be easily copied.

Before anyone goes to the effort to investigate this further, have you followed through with what was suggested in that error message – and the many things that appear connected to that?

2 Likes

After installing the system certs, the segfault still occurs:

[ anki-bin ] $ anki
Starting Anki 25.09.2...
Segmentation fault         (core dumped) anki

1 Like

I looked at the core dump with gdb but unfortunately no backtrace is available. But there is one obvious thing to try: Download the official anki package from https://apps.ankiweb.net/ and remove the packaged version from AUR.

The AUR heavily modified the way anki is installed (e.g. it uses python to invoke anki instead of a shell script that calls the launcher); so if it works with the official version, then you have to report this to the AUR package maintainer.

2 Likes

You should probably take this up with the packager AUR (en) - anki-bin. Or try installing it via the github-provided release and see if it still segfaults

1 Like

Thanks for the replies. I did mention this on the AUR page but I was told to report it upstream there. Classic case of “not my problem”.

I am out of town for the week with no access to that computer but I will try installing the official version when I return and see what happens with that approach.

Thanks for the replies.

1 Like

For the record, I was able to install the AUR anki-bin package on my laptop and it runs and executes with no issue.

That doesn’t mean that there’s no issue in the AUR package of course but obviously it does work in some cases at least.

It also runs just fine without the pip_system_certs module. Same error but it runs just fine.

I installed the official version and can confirm there is no segfault. My preference is usually to use the Arch/AUR packages since then I can manage the installation with pacman but I guess it’s not feasible in this case.

Follow-up: if I decide to uninstall, does the provided uninstall.sh script also remove the dependencies that it installed? What if they are required by another program?

You can check what it does by opening the file or by viewing it on github:

In short: it only uninstalls the things that the ./install script installed. It won’t touch your system dependencies and the things ./uninstall removes are not needed by another program. The ./uninstall won’t remove the anki from your distro either.

1 Like

I uninstalled the version from the AUR myself prior to installing this one. But when I ran the launcher, it installed a bunch of dependencies:

[ anki-launcher-25.09-linux ] $ anki
Anki Launcher

1) Latest Anki (press Enter)
2) Choose a version

5) Allow betas: off
6) Cache downloads: on
7) Download mirror: off

8) Uninstall
> 1

Checking for updates...
Updating Anki...

Using CPython 3.13.5
Creating virtual environment at: .venv
Resolved 49 packages in 1.06s
Prepared 39 packages in 12.02s
Installed 39 packages in 165ms
 + anki==25.9.2
 + anki-release==25.9.2
 + aqt==25.9.2
 + attrs==25.3.0
 + beautifulsoup4==4.13.4
 + blinker==1.9.0
 + certifi==2025.6.15
 + charset-normalizer==3.4.2
 + click==8.2.1
 + decorator==5.2.1
 + distro==1.9.0
 + flask==3.1.1
 + flask-cors==6.0.1
 + idna==3.10
 + itsdangerous==2.2.0
 + jinja2==3.1.6
 + jsonschema==4.24.0
 + jsonschema-specifications==2025.4.1
 + markdown==3.8.2
 + markupsafe==3.0.2
 + orjson==3.10.18
 + pip==25.1.1
 + pip-system-certs==5.2
 + protobuf==6.31.1
 + pyqt6==6.9.1
 + pyqt6-qt6==6.9.1
 + pyqt6-sip==13.10.2
 + pyqt6-webengine==6.8.0
 + pyqt6-webengine-qt6==6.8.2
 + pysocks==1.7.1
 + referencing==0.36.2
 + requests==2.32.4
 + rpds-py==0.25.1
 + send2trash==1.8.3
 + soupsieve==2.7
 + typing-extensions==4.14.0
 + urllib3==2.5.0
 + waitress==3.0.2
 + werkzeug==3.1.3

Press enter to start Anki.

I can’t tell if these are all Python dependencies that are installed in a virtual environment or not. If so, is there an easy way to delete the virtual environment?

If not, I can’t imagine that the intention was to have the user manually track down and delete all of those files…

No need to. They are in a single folder:

They won’t be removed by the ./uninstall script, though.

Ah OK, that’s pretty easy.

Thanks for all the help. I’ll report the original issue to the AUR.

1 Like

I am also experiencing a crash on startup that looks identical, unfortunately I can’t tell from the core dump if this is the same issue as too much info is missing.

Assuming this is the same crash, here is a backtrace from gdb on my system:

#0  QtWebEngineCore::ContentClientQt::SetGpuInfo () at /usr/src/debug/qt6-webengine/qtwebengine/src/core/content_client_qt.cpp:528
#1  0x00007fffe4e8d529 in content::GpuDataManagerImplPrivate::UpdateGpuInfo () at ../../../../../qtwebengine/src/3rdparty/chromium/content/browser/gpu/gpu_data_manager_impl_private.cc:1051
#2  0x00007fffe4e85a7b in content::GpuDataManagerImpl::UpdateGpuInfo () at ../../../../../qtwebengine/src/3rdparty/chromium/content/browser/gpu/gpu_data_manager_impl.cc:168
#3  0x00007fffe4e9dac4 in content::GpuProcessHost::DidInitialize () at ../../../../../qtwebengine/src/3rdparty/chromium/content/browser/gpu/gpu_process_host.cc:988
#4  0x00007fffe8324218 in viz::GpuHostImpl::DidInitialize () at ./../../../../../qtwebengine/src/3rdparty/chromium/components/viz/host/gpu_host_impl.cc:498
#5  0x00007fffe313afd4 in viz::mojom::GpuHostStubDispatch::Accept () at ./gen/services/viz/privileged/mojom/gl/gpu_host.mojom.cc:1297
#6  0x00007fffe71e1cf2 in mojo::InterfaceEndpointClient::HandleValidatedMessage () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:1052
#7  0x00007fffe71e367e in mojo::MessageDispatcher::Accept () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/message_dispatcher.cc:43
#8  0x00007fffe71e199c in mojo::InterfaceEndpointClient::HandleIncomingMessage () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:724
#9  0x00007fffe71e6fa2 in mojo::internal::MultiplexRouter::ProcessIncomingMessage () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/multiplex_router.cc:1121
#10 0x00007fffe71ea812 in mojo::internal::MultiplexRouter::Accept () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/multiplex_router.cc:734
#11 0x00007fffe71e367e in mojo::MessageDispatcher::Accept () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/message_dispatcher.cc:43
#12 0x00007fffe71db1d1 in mojo::Connector::DispatchMessage () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:562
#13 0x00007fffe71dbecc in mojo::Connector::ReadAllAvailableMessages () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:620
#14 0x00007fffe71dc01e in mojo::Connector::OnHandleReadyInternal () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:452
#15 mojo::Connector::OnWatcherHandleReady () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/connector.cc:418
#16 0x00007fffe30afb2e in base::RepeatingCallback<void (unsigned int)>::Run(unsigned int) const & () at ../../../../../qtwebengine/src/3rdparty/chromium/base/functional/callback.h:344
#17 mojo::SimpleWatcher::DiscardReadyState () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/system/simple_watcher.h:192
#18 0x00007fffe7203bdd in base::RepeatingCallback<void (unsigned int, mojo::HandleSignalsState const&)>::Run(unsigned int, mojo::HandleSignalsState const&) const & () at ../../../../../qtwebengine/src/3rdparty/chromium/base/functional/callback.h:344
#19 mojo::SimpleWatcher::OnHandleReady () at ../../../../../qtwebengine/src/3rdparty/chromium/mojo/public/cpp/system/simple_watcher.cc:278
#20 0x00007fffe685e6be in base::OnceCallback<void ()>::Run() && () at ../../../../../qtwebengine/src/3rdparty/chromium/base/functional/callback.h:156
#21 base::TaskAnnotator::RunTaskImpl () at ./../../../../../qtwebengine/src/3rdparty/chromium/base/task/common/task_annotator.cc:209
#22 0x00007fffe68861d7 in RunTask<base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)::<lambda(perfetto::EventContext&)> > () at ../../../../../qtwebengine/src/3rdparty/chromium/base/task/common/task_annotator.h:106
#23 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl () at ./../../../../../qtwebengine/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:456
#24 0x00007fffe6887113 in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork () at ./../../../../../qtwebengine/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:330
#25 0x00007fffe19eb2aa in QtWebEngineCore::MessagePumpForUIQt::handleScheduledWork () at /usr/src/debug/qt6-webengine/qtwebengine/src/core/browser_main_parts_qt.cpp:154
#26 QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}::operator()() const () at /usr/src/debug/qt6-webengine/qtwebengine/src/core/browser_main_parts_qt.cpp:107
#27 std::__invoke_impl<void, QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}&>(std::__invoke_other, QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}&) () at /usr/include/c++/15.2.1/bits/invoke.h:63
#28 std::__invoke_r<void, QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}&>(QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}&) () at /usr/include/c++/15.2.1/bits/invoke.h:113
#29 std::_Function_handler<void (), QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}>::_M_invoke(std::_Any_data const&) () at /usr/include/c++/15.2.1/bits/std_function.h:292
#30 0x00007ffff2dc4936 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1388
#31 0x00007fffced021c0 in QApplicationPrivate::notify_helper (this=this@entry=0x7fffe19eb2aa <std::_Function_handler<void (), QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt()::{lambda()#1}>::_M_invoke(std::_Any_data const&)+90>, receiver=0x555556b0dc90, 
    receiver@entry=0x555555c31f18, e=0x7fff60475490) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3305
#32 0x00007fffced02f57 in QApplication::notify (this=this@entry=0x555556b9fac0, receiver=0x555555c31f18, receiver@entry=0x555556b0dc90, e=e@entry=0x7fff60475490) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3067
#33 0x00007fffce8c8fc7 in sipQApplication::notify (this=0x555556b9fac0, a0=0x555556b0dc90, a1=0x7fff60475490) at /usr/src/debug/pyqt6/pyqt6-6.10.1/build/QtWidgets/sipQtWidgetsQApplication.cpp:249
#34 0x00007ffff2d6a958 in QCoreApplication::notifyInternal2 (receiver=0x555556b0dc90, event=event@entry=0x7fff60475490) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109
#35 0x00007ffff2d6ad30 in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7fff60475490) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1549
#36 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555555c31ed0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1904
#37 0x00007ffff304ae18 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1757
#38 postEventSourceDispatch (s=0x555556ba07d0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#39 0x00007ffff3306f8d in g_main_dispatch (context=0x7fffc8001000) at ../glib/glib/gmain.c:3565
#40 0x00007ffff3308657 in g_main_context_dispatch_unlocked (context=0x7fffc8001000) at ../glib/glib/gmain.c:4425
#41 g_main_context_iterate_unlocked (context=context@entry=0x7fffc8001000, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4490
#42 0x00007ffff3308865 in g_main_context_iteration (context=0x7fffc8001000, may_block=1) at ../glib/glib/gmain.c:4556
#43 0x00007ffff3048152 in QEventDispatcherGlib::processEvents (this=0x555556ba04c0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#44 0x00007ffff2d75786 in QEventLoop::processEvents (this=0x7fffffffdb00, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:104
#45 QEventLoop::exec (this=0x7fffffffdb00, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:186
#46 0x00007ffff2d6f3f1 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1452
#47 0x00007fffcecfd32a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2575
#48 0x00007fffce8c4f1c in meth_QApplication_exec (sipSelf=<optimized out>, sipArgs=<optimized out>) at /usr/src/debug/pyqt6/pyqt6-6.10.1/build/QtWidgets/sipQtWidgetsQApplication.cpp:1289
#49 0x00007ffff7994d84 in cfunction_call (func=0x7fffa332a980, args=0x7ffff7d00548 <_PyRuntime+88296>, kwargs=0x0) at Objects/methodobject.c:550
#50 0x00007ffff79611db in _PyObject_MakeTpCall (tstate=0x7ffff7d2fdf0 <_PyRuntime+283024>, callable=0x7fffa332a980, args=<optimized out>, nargs=<optimized out>, keywords=<optimized out>) at Objects/call.c:242
#51 0x00007ffff7975104 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:813
#52 0x00007ffff7a48b59 in PyEval_EvalCode (co=0x7ffff771e0d0, globals=<optimized out>, locals=0x7ffff6f30640) at Python/ceval.c:604
#53 0x00007ffff7a8956c in run_eval_code_obj (tstate=tstate@entry=0x7ffff7d2fdf0 <_PyRuntime+283024>, co=co@entry=0x7ffff771e0d0, globals=globals@entry=0x7ffff6f30640, locals=locals@entry=0x7ffff6f30640) at Python/pythonrun.c:1381
#54 0x00007ffff7a8618d in run_mod
    (mod=mod@entry=0x555555623e78, filename=filename@entry=0x7ffff6f30770, globals=globals@entry=0x7ffff6f30640, locals=locals@entry=0x7ffff6f30640, flags=flags@entry=0x7fffffffe088, arena=arena@entry=0x7ffff771bd10, interactive_src=0x0, generate_new_source=0)
    at Python/pythonrun.c:1489
#55 0x00007ffff7a828f8 in pyrun_file (fp=fp@entry=0x555555570190, filename=filename@entry=0x7ffff6f30770, start=start@entry=257, globals=globals@entry=0x7ffff6f30640, locals=locals@entry=0x7ffff6f30640, closeit=closeit@entry=1, flags=0x7fffffffe088)
    at Python/pythonrun.c:1295
#56 0x00007ffff7a82522 in _PyRun_SimpleFileObject (fp=fp@entry=0x555555570190, filename=filename@entry=0x7ffff6f30770, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe088) at Python/pythonrun.c:517
#57 0x00007ffff7a82323 in _PyRun_AnyFileObject (fp=fp@entry=0x555555570190, filename=filename@entry=0x7ffff6f30770, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffe088) at Python/pythonrun.c:77
#58 0x00007ffff7a80991 in pymain_run_file_obj (program_name=0x7ffff6f307b0, filename=0x7ffff6f30770, skip_source_first_line=0) at Modules/main.c:410
#59 pymain_run_file (config=0x7ffff7d024e8 <_PyRuntime+96392>) at Modules/main.c:429
#60 pymain_run_python (exitcode=0x7fffffffe07c) at Modules/main.c:696
#61 Py_RunMain () at Modules/main.c:775
#62 0x00007ffff7a35beb in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:829
#63 0x00007ffff7427635 in __libc_start_call_main (main=main@entry=0x555555555120 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffe2e8) at ../sysdeps/nptl/libc_start_call_main.h:58
#64 0x00007ffff74276e9 in __libc_start_main_impl (main=0x555555555120 <main>, argc=2, argv=0x7fffffffe2e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe2d8) at ../csu/libc-start.c:360
#65 0x0000555555555045 in _start ()

Appears to be a NULL pointer de-ref in QtWebEngineCore::ContentClientQt::SetGpuInfo.

Looking at the QT bug tracker someone else seems to have already reported something similar in another application here: https://qt-project.atlassian.net/browse/QTBUG-142497

I’m not sure if this a 6.10.1 regression as listed but the call stack leading up to the crash looks identical so I presume it is the same underlying cause. As suggested in the bug tracker, starting Anki with QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu prevents a crash on my machine.

@danko, can you try the above and see if it allows you to run Anki?

This solved the issue for me with Intel graphics on an up to date Arch install. I see lots of reports like this related to 6.10.1

Thanks for the workaround!

2 Likes

@Fullmetal5 , I tried installing the Arch version again so I could try with those flags but it did not fix my issue. There is still a segfault, possibly the same one, possibly another.

It would not surprise me if this were graphics related. This machine is quite old and uses legacy Nvidia drivers to support a video card from 2009. Since the official version works, I’ll continue using that one.

Thanks!

Did you do this yet btw? If yes, please send us the link so that others with a similar issue can follow that report.