Tiny Core Linux

Tiny Core Extensions => TCE Bugs => Topic started by: ctor on August 23, 2022, 06:25:28 AM

Title: keepassx illegal instruction
Post by: ctor on August 23, 2022, 06:25:28 AM
Getting the following message when starting keepassx application :

Code: [Select]
traps: keepassx[9318] trap invalid opcode ip:b744e1b5 sp:bfa8c38c error:0 in libQt5Gui.so.5.14.0[b7445000+288000]

I am running this extension on a very old computer and suspect the application executes an instruction that is not available on the processor. I have successfully run keepassx on a newer computer under Tiny Core version 13.1.

Code: [Select]
tc@BlackBeauty:~$ version
13.1

tc@BlackBeauty:~$ uname -a
Linux BlackBeauty 5.15.10-tinycore #622 SMP Tue Dec 21 16:51:09 UTC 2021 i686 GNU/Linux

tc@BlackBeauty:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Genuine Intel(R) CPU           U2700  @ 1.30GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 1197.003
cache size      : 2048 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fdiv_bug        : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 tm pbe nx lm constant_tsc arch_perfmon pebs bts cpuid aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm dtherm
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips        : 2594.57
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:


The keepassx application works on this old computer with version 10.0 of Tiny Core.

In reviewing the forum posts, this issue has occurred before with other applications. For example, GCC
has injected illegal instructions into executables when specifically told otherwise:

http://forum.tinycorelinux.net/index.php/topic,20404.msg127127.html#msg127127 (http://forum.tinycorelinux.net/index.php/topic,20404.msg127127.html#msg127127)

The TC philosophy has been to support computers that run on i486 and above.
Has that philosophy changed? Or is it more likely that GCC is involved?

Please note that this is just a curiosity question, not a demand to fix the issue.
Thank you for supporting Tiny Core all these years.

regards,
Ctor
Title: Re: keepassx illegal instruction
Post by: Juanito on August 23, 2022, 06:33:47 AM
Sometimes gcc seems to ignore -march=i486.

To take care of the above, I used to use the linuxfromscratch uname-hack to fool gcc into thinking it was compiling on an i486.

Since kernel-5.x.y uname-hack no longer compiles.

There is a way to achieve the same thing using ld_preload, which was used to build the tc-13.x x86 toolchain.

See: http://tinycorelinux.net/13.x/x86/release/src/toolchain/compile_uname_hack
Title: Re: keepassx illegal instruction
Post by: Rich on August 23, 2022, 06:53:28 AM
Hi ctor
Code: [Select]
traps: keepassx[9318] trap invalid opcode ip:b744e1b5 sp:bfa8c38c error:0 in libQt5Gui.so.5.14.0[b7445000+288000]
The  invalid opcode  looks like it's coming from  Qt5.  This issue has been reported for  VLC  too.