On Sun, 14 Jul 2024 14:45:33 +0200
Andreas Rönnquist <[email protected]> wrote:
[...]
> >>
> >This is on a fairly elderly Celeron laptop running LXQt. I half
> >wondered if the processor is too old - for info, o/p of
> >/proc/cpuinfo:
>
> Thanks - that looks indeed like it might be the problem - however,
> some debugging would help out to pinpoint it exactly.
> >
[...]
Appears to be around here (I also pulled down the source as well):
Program received signal SIGILL, Illegal instruction.
0xb7e804c3 in (anonymous namespace)::get_option_registry () at
./src/engine/optionsbase.cpp:74 74 {
(gdb) list
69 std::vector<option_def> options_;
70 std::map<std::string, size_t, std::less<>>
name_to_option_;
71 };
72
73 std::pair<option_registry&, fz::scoped_lock>
get_option_registry()
74 {
75 static option_registry reg;
76 return std::make_pair(std::ref(reg),
fz::scoped_lock(reg.mtx_));
77 }
78 }
And looks to be sat on a "pinsrd" instruction.
(gdb) disassemble /s
Dump of assembler code for function (anonymous
namespace)::get_option_registry(): Address range 0xb7e804a0 to
0xb7e805ad: ./src/engine/optionsbase.cpp:
74 {
0xb7e804a0 <+0>: push %ebp
0xb7e804a1 <+1>: mov %esp,%ebp
0xb7e804a3 <+3>: push %edi
0xb7e804a4 <+4>: mov %eax,%edi
0xb7e804a6 <+6>: push %esi
0xb7e804a7 <+7>: call 0xb7db5a3d <__x86.get_pc_thunk.si>
0xb7e804ac <+12>: add $0x9abd0,%esi
0xb7e804b2 <+18>: push %ebx
0xb7e804b3 <+19>: sub $0x1c,%esp
0xb7e804b6 <+22>: lea 0x1ca4(%esi),%eax
0xb7e804bc <+28>: movd %eax,%xmm0
0xb7e804c0 <+32>: mov %eax,-0x1c(%ebp)
=> 0xb7e804c3 <+35>: pinsrd $0x1,%eax,%xmm0
0xb7e804c9 <+41>: movq %xmm0,-0x28(%ebp)
Looks to be something that only arrived with SSE4.1. Whereas that dump
of cpuinfo shows that mine only has SSE2. So that answers that one then.
Rgs,
Jon.
--
--
== mailto:[email protected] - in real life jon bird
== site: http://www.onasticksoftware.co.uk
== Home of the OAS Playout System
== twitter:@fridgemagnet2