Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


Linux build

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine
View previous topic :: View next topic  
Author Message
Dark Byte
Site Admin
Reputation: 473

Joined: 09 May 2003
Posts: 25916
Location: The netherlands

PostPosted: Sat Apr 25, 2026 2:46 am    Post subject: Linux build Reply with quote

There's now an initial version of cheat engine for linux available for download on cheatengine.org

it uses qt5 but if requested i can make a gtk version as well

please report bugs you encounter

the windows version will come soon

_________________
Tools give you results. Knowledge gives you control.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
ParkourPenguin
I post too much
Reputation: 155

Joined: 06 Jul 2014
Posts: 4756

PostPosted: Sat Apr 25, 2026 2:16 pm    Post subject: This post has 1 review(s) Reply with quote

Running on Arch w/ KDE desktop environment (Wayland). I got most of the way through the tutorial and didn't test most of the features.

v The binary `cheatengine-x86_64` links with `libQt5Pas.so.1`. This dependency should be mentioned somewhere, e.g. in the readme. On Arch, the package "qt5pas" provides this library; I've heard Debian, Ubuntu, and Fedora also have relevant packages.
Long term, an appimage would be convenient.


v vI noticed the scandata files are saved in the `/tmp` directory. This is often mounted as a `tmpfs` filesystem that's backed by RAM. If the game is already taking up the majority of the system's RAM, scanning could cause bad things to start happening.
`/var/tmp` might be a better default for people who don't know what they're doing: by convention, it's expected files in this directory will persist across a system restart, so it must be backed by something other than RAM.
Dynamically switching between them would be best, but also complicated.

If the main window isn't in focus, right clicking a record in the address list doesn't work properly. If it's some window CE created ("Advanced Options" or "Table Extras" buttons), the popup window spawns out of place relative to the window that was in focus; if some other window is focused (e.g. the tutorial, a web browser, etc.), an entirely new window is created that's also out of place.

CE gets stuck in an infinite loop trying to allocate memory in the target process. Tested with both AA `alloc` and Lua `allocateMemory`.
Code:
13:49:35 : 7817:CEODS:_CPUCOUNT=12
13:49:35 : ext_alloc(1, 3f0000, 4096)
13:49:35 : hasLoadedExtension == FALSE
13:49:35 : loadCEServerExtension
13:49:35 : this process is being debugged
13:49:35 : Not the debugger thread. Switching...
13:49:35 : loadCEServerExtension
13:49:35 : this process is being debugged
13:49:35 : This is the debugger thread
13:49:35 : modulepath = /tmp/CheatEngineLinux766/libceserver-extension_x86_64_linux.so
13:49:35 : This process is being debugged. Checking if it's already loaded
13:49:35 : OpenPipe("ceserver_extension7851")
13:49:35 : trying to connect to ceserver_extension7851
13:49:35 : connect returned -1
13:49:35 : Failed connecting to ceserver_extension7851
13:49:35 : Scanning for dlopen
13:49:35 : Trying to find dlopen
13:49:36 : dlopen not found, trying __libc_dlopen_mode
13:49:37 : failure finding dlopen or any variant of it
13:49:37 : Returned from debugger thread. Result:0
13:49:37 : Failure to load the extension
13:49:37 : 7817:CEODS:ext_alloc failed. trying allocWithoutExtension
13:49:37 : allocWithoutExtension
13:49:38 : Failure finding mmap address
13:49:38 : 7817:CEODS:Failure to allocate memory 3 (prefered=003F0000)
13:49:38 : ext_alloc(1, 3f0000, 4096)
...
This repeats endlessly from `ext_alloc...` to `CEODS: Failure to allocate memory...`

The vertical lines in the hex view are positioned incorrectly. Changing the window size doesn't help- that just makes more lines that are still off.

Clicking on the light bulb "help" window / image that's created with the tutorial made the tutorial unresponsive. One thread is maxed out at near 100%, so I guess it got stuck in an infinite loop.

In the "Find out what accesses / writes to this address" window, clicking on "Stop" after the target no longer exists doesn't work. The window itself closed fine, but I don't know if anything important leaked.

If the target dies, CE appears to keep trying to open `/proc/[pid]/maps`.

Trying to generate a pointermap crashes CE (right click address list -> Generate pointermap). Terminal output:
Code:
TReversePointerListHandler.create
Querying memoryregions
After split:
Allocating 524288 bytes to 'buffer'
Initial scan to determine the memory needed
Secondary scan actually allocating the memory and filling in the data
filling linked list
[FORMS.PP] ExceptionOccurred
  Sender=EAccessViolation
  Exception=Access violation
  Stack trace:
  $00007F77EFFEDFFF
  $00007F77F0008B34
  $00007F77EB319213
  $00007F77EFF07F0F
  $00007F77F0564B82
  $00007F77F0592189
  $00007F77F0558626
  $00007F77EF8D0448
  $00007F77EF8D17A0
  $00007F77EF924930
  $00007F77EE106F4D
  $00007F77EE108617
  $00007F77EE108825
  $00007F77EF921DC9
  $0000000000A7C4C7
  $00000000004C8F67
  $0000000000B79E79
TMemScan destructor
after DeleteScanfolder
TMemScan destructor exit
Symbolhandler was terminated. Not going to sync
Symbolhandler was terminated. Not going to sync


Module address symbols only work in the first section of the module.
Code:
print(getNameFromAddress(0x0041EFFF))  -- "tutorial-x86_64"+1EFFF
print(getNameFromAddress(0x0041F000))  -- 0041F000
Translating a symbol to an address still works: `getAddressSafe('tutorial-x86_64+1F000')` returns the expected value. But then again, `getAddressSafe('tutorial-x86_64-1000')` also returns the "expected" value even though it probably shouldn't.

CE logs a tremendous amount of information to the system log. Over 83% of lines in the log were from CE in this boot. It would be nice if you added some CLI flags to change this behaviour: e.g. `-v` for verbose, `-vv` for very verbose, maybe log to stdout / stderr by default and have a `--syslog` flag to also log to the system log, etc.


Minor:

Many files are executable when they shouldn't be: .lua, .txt, .png

The messages "This plugin supports grabbing the mouse only for popup windows" and "qt.qpa.wayland: Wayland does not support QWindow::requestActivate()" are often output to the terminal.

The colorscheme for AA scripts isn't great for a dark background.

I didn't expect CE to change the current working directory to `/proc/[pid]`.

The file open / save dialogs aren't like the standard ones other applications use. I guess that's a lazarus thing.

There was a noticeable lag of 0.5s - 1s about every other word typed in the Lua console. Maybe it was when the autocomplete "helper" window was suppose to pop up.

The windows are organized in the taskbar in a very weird way. The tutorial and the "help" light bulb window get grouped together, but all of the CE windows don't. It would be better if CE worked like most other applications where multiple windows get grouped together under the same icon.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 473

Joined: 09 May 2003
Posts: 25916
Location: The netherlands

PostPosted: Tue Apr 28, 2026 3:43 am    Post subject: Reply with quote

thanks. i'll get on it (did you try to allocate while the target was frozen ? as that's not an option at this time)
_________________
Tools give you results. Knowledge gives you control.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
ParkourPenguin
I post too much
Reputation: 155

Joined: 06 Jul 2014
Posts: 4756

PostPosted: Tue Apr 28, 2026 1:05 pm    Post subject: Reply with quote

The target wasn't frozen.

The Lua function `allocateMemory` doesn't enter an infinite loop, but it doesn't appear to work either. Running the code `return allocateMemory(4096)` in the Lua engine shows the function didn't return any values.
The Auto Assembler entering an infinite loop on allocation failure could be a separate issue from the allocation failure itself.

Steps to reproduce:
  1. Execute `sudo bash -c 'echo 0 >/proc/sys/kernel/yama/ptrace_scope'`
  2. Run the executable cheatengine-x86_64 as an unprivileged user
  3. Open the tutorial from the "Help" menu
  4. Attach to the tutorial
  5. Open an AA script window
  6. Execute the code `alloc(foo,4096)`

The lag when typing also happens in the AA script window. These messages are output to the terminal when the lag spike happens:
Code:
Getting processdata for TH32CS_SNAPFIRSTMODULE
Creating 1-entry module list for process 5210
The opened process is 64-bit
I guess it's something blocking the main thread for a second.
_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
Dark Byte
Site Admin
Reputation: 473

Joined: 09 May 2003
Posts: 25916
Location: The netherlands

PostPosted: Thu Apr 30, 2026 8:00 am    Post subject: Reply with quote

for 4: when you say "attach to the tutorial" do you mean you click on "attach to process" or just doubleclick the tutorial, or click the tutorial and click ok ?

if you do "attach to process" which debugger interface method did you have selected in settings ?

_________________
Tools give you results. Knowledge gives you control.

Like my help? Join me on Patreon so i can keep helping
Back to top
View user's profile Send private message MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites