Open 3cncoderzq opened 5 years ago
记录 Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz 信息:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz
stepping : 7
microcode : 0x2f
cpu MHz : 1313.819
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
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 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs
bogomips : 4988.53
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
支持的 CPU 特征:
记录 Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz 信息:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz
stepping : 9
microcode : 0x21
cpu MHz : 1906.764
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
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 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm cpuid_fault epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm arat pln pts md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
bogomips : 6600.44
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
支持的 CPU 特征:
记录 Intel(R) Pentium(R) CPU G4400 @ 3.30GHz 信息:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 94
model name : Intel(R) Pentium(R) CPU G4400 @ 3.30GHz
stepping : 3
microcode : 0xcc
cpu MHz : 900.006
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
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 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust erms invpcid rdseed smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp md_clear flush_l1d
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
bogomips : 6624.00
clflush size : 64
cache_alignment : 64
address sizes : 39 bits physical, 48 bits virtual
power management:
支持的 CPU 特征:
看起来缺乏 AVX 支持的 CPU 无法运行预编译的 AppImage 。
记录 Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz 信息:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 78
model name : Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz
stepping : 3
microcode : 0xffffffff
cpu MHz : 2808.000
cache size : 256 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 6
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 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave osxsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt ibrs ibpb stibp ssbd
bogomips : 5616.00
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
支持的 CPU 特征:
请将下面这段代码保存成 cpu_feature.py
文件:
#!/usr/bin/env python2
import json
import argparse
import sys
import os.path as path
import re
import urllib2
from collections import defaultdict
import subprocess
def parse_gas_specs(filename):
if filename.startswith(("http://", "https://")):
print("Downloading file: '%s'" % filename)
resp = urllib2.urlopen(filename)
gas = resp.read()
else:
with open(filename, "rb") as fd:
gas = fd.read()
print("Parsing gas.vim")
tmp = re.findall(r"syn keyword (gasOpcode_[^\t ]+)[ \t]+(.*)", gas)
opcodes = defaultdict(set)
op_count = defaultdict()
for k, v in tmp:
codes = v.split(" ")
for code in codes:
op_count[code] = op_count.get(code, 0) + 1
opcodes[k].update(codes)
if False:
# cleanup non unique ops
for k, v in opcodes.items():
for op in list(v):
if op_count[op] > 1:
v.remove(op)
result = defaultdict(dict)
re_op_mapping = r"call <SID>MapOpcode\('([^']+)'[ \t]*,[ \t]*'([^']+)'[ \t]*,[ \t]*'([^']+)'\)"
for k, arch, feature in re.findall(re_op_mapping, gas):
result[arch][feature] = list(opcodes[k])
return result
def find_command(cmd, specs):
cmd = re.compile("^%s$" % cmd)
for arch, features in specs.items():
for feature, ops in features.items():
for op in ops:
if cmd.match(op):
print("%s %s => %s" % (arch, feature, op))
if __name__ == '__main__':
own_path = path.dirname(sys.argv[0])
parser = argparse.ArgumentParser(description='Tries to detect which CPU features where used in a given binary.')
parser.add_argument("-j", "--json-specs", required=False, default=str(path.join(own_path, "specs.json")), help="json file containing a command to feature mapping.")
parser.add_argument("-o", "--json-output", required=False, default=str(path.join(own_path, "specs.json")), help="json file to save the command to feature mapping parsed from an gas.vim file. Defaults to same folder as this scipt/specs.json")
parser.add_argument("-g", "--gas", required=False, default="https://github.com/Shirk/vim-gas/raw/master/syntax/gas.vim", help="gas.vim file to convert to feature mapping.")
parser.add_argument("-nw", "--no-json-save", action="store_true", required=False, help="Do not save converted mapping from gas.vim file.")
parser.add_argument("-b", "--include-base", action="store_true", required=False, help="Include base instructions in the search.")
parser.add_argument("-l", "--lookup-op", action="store_true", required=False, help="Lookup arch and feature for given command. Can be regex.")
parser.add_argument("executable", help="The executable to analyze or the command to lookup if -l is set.")
args = parser.parse_args()
specs = None
if path.isfile(args.json_specs):
try:
with open(args.json_specs, "rb") as fp:
specs = json.load(fp)
except Exception as e: # TODO: dirty
print("Failed loading specs.json file from '%s'" % args.json_specs)
print(e)
exit(1)
if specs is None:
try:
specs = parse_gas_specs(args.gas)
if not args.no_json_save:
with open(args.json_output, "wb") as fp:
json.dump(specs, fp, sort_keys=True, indent=2)
except Exception as e: # TODO: dirty
print("Failed loading gas.vim file from '%s'" % args.gas)
print(e)
exit(1)
if args.lookup_op:
find_command(args.executable, specs)
exit(0)
print("Running objdump")
found_ops = set()
out = subprocess.check_output(["objdump", "-M", "intel", "--no-show-raw-insn", "-D", args.executable])
for line in out.split("\n"):
line = line.split()
if len(line) < 3:
continue
op = line[1]
found_ops.add(op)
print("Found %i ops" % len(found_ops))
found_features = set()
for op in found_ops:
for arch, features in specs.items():
for feature, fops in features.items():
if not args.include_base and feature == "base":
continue
if op in fops:
found_features.add((arch, feature, op))
foo = defaultdict(lambda: defaultdict(list))
for arch, feature, op in found_features:
foo[arch][feature].append(op)
for arch in foo:
print("\n%s:" % arch)
for feature in foo[arch]:
print("\t%s:" % feature)
print("\t\t%s" % "\n\t\t".join(foo[arch][feature]))
然后执行:
python2 cpu_feature.py path/to/bin/WizNote
将 path/to/bin/WizNote
替换成你编译的 WizNote 二进制程序。然后将输出给我看看。
Mac下也有类似问题,意外退出
Crashed Thread: 0 CrBrowserMain Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [17253]
CPU特征
$ sysctl machdep.cpu | grep AVX
machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C
machdep.cpu.leaf7_features: RDWRFSGS TSC_THREAD_OFFSET SGX BMI1 AVX2 SMEP BMI2 ERMS INVPCID FPU_CSDS MPX RDSEED ADX SMAP CLFSOPT IPT SGXLC MDCLEAR TSXFA IBRS STIBP L1DF SSBD
@eegod 是启动就崩溃吗?还是运行时偶然崩溃?还记得做过什么操作吗?
@altairwei 我从2.7.3开始用的,一开始是运行一段时间突然崩溃,到后来启动就崩溃,卸载重装也不行。中间可能更新过系统,不记得了。用官网版是偶尔崩溃。
我看官方最近放出的2.7.6版更新说明有一条修复使用过程中的异常退出问题
,不知道是不是同样的问题。
@altairwei 我从2.7.3开始用的,一开始是运行一段时间突然崩溃,到后来启动就崩溃,卸载重装也不行。中间可能更新过系统,不记得了。用官网版是偶尔崩溃。 我看官方最近放出的2.7.6版更新说明有一条
修复使用过程中的异常退出问题
,不知道是不是同样的问题。
也就是说你现在的情况是,无法启动 WizNotePlus ?
@altairwei 现在无法启动 附完整的错误报告
机器参数: cpu:奔腾G4400