[SRU] wminput crashes with ImportError: ... undefined symbol: PyVarObject_CallFunction

Bug #2042356 reported by James Walters
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
cwiid (Debian)
Fix Released
Unknown
cwiid (Ubuntu)
Fix Released
Undecided
Unassigned
Jammy
Confirmed
Undecided
Unassigned

Bug Description

[ Impact ]

wminput is completey unusable as it will immediately crash with undefined symbol error.

$ sudo wminput <any random mac address>
ImportError: /usr/lib/python3/dist-packages/cwiid.cpython-310-x86_64-linux-gnu.so: undefined symbol: PyVarObject_CallFunction

This is mostly because the code was not properly ported to Python-3.

[ Test Plan ]

1. install wminput
2. execute wminput with a mac address

If the package is not fixed, it will fail with undefined symbol error.

Ideally someone with the hardware should test.

[ Where problems could occur ]

There are changes in the code and there are chances of regression due to this change. But wminput as of now is already unusable, so any regression can not be worse than that.

[ Other Info ]

The patch, even though looks big is mostly changing all the PyVarObject to PyObject, and few other changes.
Initially I tried to pick only the changes for PyVarObject but that resulted in errors for PyInt_FromLong. After fixing that, errors from PyCObject_Check appeared. So, I thought its best to use all the fixes from the Debian patch.

[ Original Bug Description ]

When trying to invoke wminput I get the following:

james@thelio:~$ sudo wminput [redacted MAC address]
ImportError: /usr/lib/python3/dist-packages/cwiid.cpython-310-x86_64-linux-gnu.so: undefined symbol: PyVarObject_CallFunction

This is a duplicate of 1958466, but I could not run apport-collect against it because it was not my bug. Since it's been orphaned for over a year, I made this bug and ran apport-bug to file it. I'm happy to provide any additional data.

ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: wminput 0.6.91-2ubuntu1
Uname: Linux 6.5.4-76060504-generic x86_64
ApportVersion: 2.20.11-0ubuntu82.5
Architecture: amd64
CasperMD5CheckResult: unknown
CurrentDesktop: MATE
Date: Tue Oct 31 14:35:47 2023
InstallationDate: Installed on 2020-10-27 (1099 days ago)
InstallationMedia: Ubuntu-MATE 20.04.1 LTS "Focal Fossa" - Release amd64 (20200731)
SourcePackage: cwiid
UpgradeStatus: Upgraded to jammy on 2022-08-12 (445 days ago)

Revision history for this message
James Walters (iamjameswalters) wrote :
Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :

I can confirm that the issue is reproducible in Jammy. Also tested and confirmed that Mantic is not affected.

Changed in cwiid (Ubuntu):
status: New → In Progress
assignee: nobody → Sudip Mukherjee (sudipmuk)
Changed in cwiid (Ubuntu Jammy):
status: New → In Progress
assignee: nobody → Sudip Mukherjee (sudipmuk)
Changed in cwiid (Ubuntu):
assignee: Sudip Mukherjee (sudipmuk) → nobody
status: In Progress → Fix Released
Changed in cwiid (Debian):
status: Unknown → Fix Released
Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :

debdiff for Jammy attached.

summary: - wminput crashes with ImportError: ... undefined symbol:
+ [SRU] wminput crashes with ImportError: ... undefined symbol:
PyVarObject_CallFunction
description: updated
Changed in cwiid (Ubuntu Jammy):
status: In Progress → Confirmed
assignee: Sudip Mukherjee (sudipmuk) → nobody
Revision history for this message
Mossroy (mossroy) wrote :

I have this same issue, and have a wiimote to test with.

Is there a .deb file generated with this patch, that I could try?

Revision history for this message
Miriam España Acebal (mirespace) wrote :

Hi Sudip!

I reviewed the patch, and I have a few questions:

- The patch seems to be one of the commits of the MR accepted on Debian on 976439 (the last one in fact). Would the commit a7ac2dbdc122115b5603f595c56cc55a6f09dca3 "Also add libwiicd patches. " be needed?

- The patch is for commit https://salsa.debian.org/georgesk/cwiid/-/blob/e7cebe40c94b05e97f07302c36e93f60482b0ae5/debian/patches/python3-build-azzra, but is not completely imported:
   - Makefile.in is not imported in the patch (maybe is this related to the commit a7ac2db (the one I pointed to in the previous question?)
   Why are some parts of the original commit (change comments, e.g.) not imported into the patch?

Could you give us more information about this elections?

I build the package with the patch (it builds OK) and I didn't test yet

Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :

Hi mossroy,

Can you please try the ppa at https://launchpad.net/~sudipmuk/+archive/ubuntu/cwiid/.

Please make sure that libcwiid and python3-cwiid are also installed from this ppa.

Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :

Hi Miriam,

The changes in the libwiicd and the other changes that I left out looked like general improvement to the code and is introducing new features which are not related to this bug report. The changes in the Makefile and setup.py are also not related to this bug report.

The comments that are not imported are removing the changelog from the source code and also updating the copyright. Those chages are done by new upstream who has forked the old repo and added Python3 support and also made the improvements. imho, these are ok for a new version but might not be appropriate for a SRU (please correct me if I am wrong).

Revision history for this message
Mossroy (mossroy) wrote :

Hi Sudip,

I've tested the packages from your ppa (after an add-apt-repository, and removing them locally, to make sure they all come from the PPA)

They can be installed with no issue, and the python errors do not show up any more.
However, when I run wminput <my-mac-address-coming-from-lswm>, it does not work.

I put my wiimote in discovery mode: buttons 1+2 pushed, blinking leds, and run the command:

$ sudo wminput <my-mac-address-coming-from-lswm>
Put Wiimote in discoverable mode now (press 1+2)...

After a few seconds (less than 5), the leds stop blinking, and stay off on the wiimote. Nothing more appears on the PC, and the wiimote seems to be "crashed". Using any button on it has no effect: nothing on the PC, and no blinking led on the wiimote.
I need to remove the batteries the wiimote, and put them again, to restore a "normal" state of the wiimote, where using any button makes the leds blink for a short moment.

I've reproduced that with 2 different wiimotes, and on 2 different computers (both running Ubuntu 22.04.4 with latest patches. One with kernel 5.15.0-105-generic, the other one with 6.5.0-28-generic)

To sum up, the Python import error seems to be solved, but there's probably another issue that prevents wminput to work.

With wmgui, the wiimote behavior is the same, and a popup "wmgui does not answer" appears on the desktop

I'd be glad to help debugging, but don't find any "verbose" or similar option to get more info

Revision history for this message
Mossroy (mossroy) wrote (last edit ):

With the same hardware (PC+wiimote), I've tested with Ubuntu 24.04 (with a live USB).

With distro packages (not the ones from the PPA), I see the exact same behavior: no error message, wiimote seems crashed

Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :

Removing ubuntu-sponsors for now as clearly this bug fix alone is not enough.

Hi mosroy,

Sorry for the delayed reply. I will check the code and try to add debugs to find out whats happening. But meanwhile, will it be possible to test Focal (20.04) also to confirm if wminput/wmgui works there or not.

Revision history for this message
Mossroy (mossroy) wrote :

Hi Sudip,

I've already used these packages with one of my wiimotes on an earlier version of Ubuntu. And they worked fine.

I see that the packages wminput and wmgui are only available on Jammy (22.04) and above, based on https://packages.ubuntu.com/search?keywords=wminput

I started a live-USB of Ubuntu Focal 20.04.6 on a PC, and apt indeed does not find wminput or wmgui. I suspect it's because of the python2->python3 switch, at that time.

So I started a live-USB of Ubuntu Bionic 18.04.6 on the same PC, and could install the 3 packages (they don't show up in https://packages.ubuntu.com/search?keywords=wminput because this Ubuntu version is not supported any more)

I can confirm that it works fine on Ubuntu 18.04: wminput displays a "Ready." message after pairing with the wiimote, and buttons/gyroscope of the wiimote have the expected effect on the Ubuntu desktop: move cursor or pointer

$ sudo wminput <my-mac-address-coming-from-lswm>
Put Wiimote in discoverable mode now (press 1+2)...
Ready.

wmgui also works fine on Ubuntu 18.04: sensors and buttons states are properly shown

NB: after pairing the wiimote with Ubuntu 18.04, its leds are all off, just like on Ubuntu 22.04 or 24.04. So what I suspected to be a "crashed" state of the wiimote seems to be its normal state with wminput/wmgui

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.