首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    [x86][linux]AVX512指令引起的进程crash

    问题背景: 在开发机上编译ovs,在目标机器上运行,出现来ovs-vswitchd崩溃,dmesg得到如下信息: [ 2807.148361] traps: ovs-vswitchd[10511] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] [ 2807.401581] traps: [11296] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] [ 2817.557260] traps: [11324] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] [ 2822.415470] traps: ovs-vswitchd[11437] trap invalid opcode ip:55aed509cb51 sp:7fffbaf19260 error:0 in ovs-vswitchd[55aed501f000+721000] [ 2827.713594] traps: [11471] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] [ 2837.869480] traps: [11529] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] [ 2870.048788] traps: [11587] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd (deleted)[55d4eecb2000+721000] [ 2870.199582] traps: [12442] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd (deleted)[55d4eecb2000+721000] [ 2880.330830] traps: [12459] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd (deleted)[55d4eecb2000+721000] [ 2890.462325] traps: [12484] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd (deleted)[55d4eecb2000+721000] 问题分析: 1,指令错误分析 log的内容是一致的,随便截取一行来看: [ 2807.401581] traps: [11296] trap invalid opcode ip:55d4eed2fb51 sp:7ffe19a29700 error:0 in ovs-vswitchd[55d4eecb2000+721000] 可以看到,是因为执行了invalid opcode导致的。很可能是指令集的原因导致的。 2,定位 根据ip:55d4eed2fb51和map信息ovs-vswitchd[55d4eecb2000+721000],可以推算出来,出错的地址是0x55d4eed2fb51 - 0x55d4eecb2000 = 0x7db51 反汇编,执行命令objdump -D /root/openvswitch-dpdk/openvswitch-2.9.2/vswitchd/ovs-vswitchd > obj,截取0x7db51偏移的代码片段: 000000000007db50 <rte_vfio_enable>: 7db50: 55 push %rbp 7db51: 62 f1 fd 48 6f 15 25 vmovdqa64 0x4ab325(%rip),%zmm2 # 528e80 <__func__.8528+0x950> 7db58: b3 4a 00

    02

    讲解Invalid character escape '\o'.

    在编程中,我们经常遇到需要在字符串中插入一些特殊字符的情况。对于某些字符,我们可以直接在字符串中使用它们,如'a'、'b'等。但是对于其他一些特殊字符,我们需要使用转义字符来表示它们。 在字符串中,反斜杠\被用作转义字符的前缀,用来表示一些特殊字符。例如,\n代表换行符,\t代表制表符,\\"代表双引号等。通过使用转义字符,我们可以在字符串中插入这些特殊字符。 然而,有些时候我们会遇到类似于'\o'这样的错误,提示"Invalid character escape '\o'",意味着无效的字符转义'\o'。这是因为在转义字符后面跟着的字符并不是一个有效的转义序列。 在这种情况下,我们可以通过将反斜杠\加倍来解决该问题。也就是说,我们需要将字符串中的'\o'写为'\\o',这样编译器将会将'\\'解析为一个反斜杠字符本身,并且'o'将被视为普通的字符,而不是一个转义序列。 下面是一个示例,展示了如何在Python中解决"Invalid character escape '\o'"的问题:

    01
    领券