• parcel segmentation fault 问题以及解决方法


    parcel 是一个很不错的all-in-one 的简单工具,可以方便web 构建,因为使用mac 构建没有发现问题,但是在linux 上运行的时候
    发现是有问题的,出现了段错误问题,尝试了几种解决方法(升级npm 、node,yarn 版本 )但是都没有解决,同时尝试使用了
    strace 信息如下

     
    rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
    rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
    read(4, "*", 1)                         = 1
    rt_sigaction(SIGIO, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7eff95e58630}, NULL, 8) = 0
    write(5, "*", 1)                        = 1
    rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
    rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
    read(4, "*", 1)                         = 1
    rt_sigaction(SIGPWR, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7eff95e58630}, NULL, 8) = 0
    write(5, "*", 1)                        = 1
    rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
    rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
    read(4, "*", 1)                         = 1
    rt_sigaction(SIGSTKFLT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7eff95e58630}, NULL, 8) = 0
    write(5, "*", 1)                        = 1
    rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
    rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
    read(4, "*", 1)                         = 1
    rt_sigaction(SIGSYS, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7eff95e58630}, NULL, 8) = 0
    write(5, "*", 1)                        = 1
    rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
    write(17, "", 0)                        = 0
    futex(0x306c80c, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x306c7e0, 100) = 4
    write(12, "\1\0\0\0\0\0\0\0", 8)        = 8
    futex(0x7eff95a7a9d0, FUTEX_WAIT, 30173, NULL) = -1 EAGAIN (Resource temporarily unavailable)
    munmap(0x7eff9527a000, 8392704)         = 0
    epoll_ctl(3, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=6}}) = 0
    epoll_ctl(3, EPOLL_CTL_ADD, 8, {EPOLLIN, {u32=8, u64=8}}) = 0
    epoll_wait(3, [], 1024, 0)              = 0
    close(6)                                = 0
    close(7)                                = 0
    close(8)                                = 0
    close(3)                                = 0
    fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
    fcntl(0, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
    rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
    ioctl(0, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
    ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0
    rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
    fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
    fcntl(1, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
    rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
    ioctl(1, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
    ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
    rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
    fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
    fcntl(2, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
    rt_sigprocmask(SIG_BLOCK, [TTOU], NULL, 8) = 0
    ioctl(2, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0
    ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0
    rt_sigprocmask(SIG_UNBLOCK, [TTOU], NULL, 8) = 0
    close(4)                                = 0
    close(5)                                = 0
    # 此处会有异常信息
    futex(0x2c97aa4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2c97aa0, FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0x1) = 1
    futex(0x2c97a60, FUTEX_WAKE_PRIVATE, 1) = 1
    futex(0x7eff8effd9d0, FUTEX_WAIT, 30179, NULL) = 0
    munmap(0x7eff94a79000, 8392704)         = 0
    munmap(0x7eff94278000, 8392704)         = 0
    munmap(0x7eff8f7ff000, 8392704)         = 0
    munmap(0x7eff8effe000, 8392704)         = 0
    exit_group(0)                           = ?
    +++ exited with 0 +++

    发现并不是很明确,就使用了perf 的trace 信息如下

    1340.638 (43.568 ms): node/30376  ... [continued]: futex()) = 0
      1384.214 ( 0.008 ms): node/30376 futex(uaddr: 0x2c97aa4, op: WAKE_OP|PRIV, val: 1, utime: 0x1, uaddr2: 0x2c97aa0, val3: 0x4000001d) = 1
      1384.226 ( 0.003 ms): node/30376 futex(uaddr: 0x2c97a60, op: WAKE|PRIV, val: 1                         ) = 0
      1384.236 ( 0.009 ms): node/30376 madvise(start: 0x7f096e8db000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1384.249 (         ): node/30376 exit(                                                                 )
      1340.722 (43.609 ms): node/30378  ... [continued]: futex()) = 0
      1384.337 ( 0.006 ms): node/30378 futex(uaddr: 0x2c97aa4, op: WAKE_OP|PRIV, val: 1, utime: 0x1, uaddr2: 0x2c97aa0, val3: 0x4000001d) = 1
      1384.346 ( 0.003 ms): node/30378 futex(uaddr: 0x2c97a60, op: WAKE|PRIV, val: 1                         ) = 0
      1384.354 ( 0.007 ms): node/30378 madvise(start: 0x7f096d8d9000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1384.364 (         ): node/30378 exit(                                                                 )
      1341.178 (43.235 ms): node/30377  ... [continued]: futex()) = 0
      1384.417 ( 0.012 ms): node/30377 futex(uaddr: 0x2c97aa4, op: WAKE_OP|PRIV, val: 1, utime: 0x1, uaddr2: 0x2c97aa0, val3: 0x4000001d) = 1
      1384.432 ( 0.003 ms): node/30377 futex(uaddr: 0x2c97a60, op: WAKE|PRIV, val: 1                         ) = 0
      1384.439 ( 0.005 ms): node/30377 madvise(start: 0x7f096e0da000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1384.447 (         ): node/30377 exit(                                                                 )
       307.570 (1077.301 ms): node/30373  ... [continued]: futex()) = -1 (unknown) INTERNAL ERROR: strerror_r(512, [buf], 128)=22
             ? (         ): node/30355  ... [continued]: epoll_wait()) = 1
      1402.290 ( 0.004 ms): node/30355 read(fd: 12, buf: 0x7fc200eaa8d0, count: 1024                         ) = 8
      1402.305 ( 0.003 ms): node/30355 close(fd: 10                                                          ) = 0
      1402.314 ( 0.002 ms): node/30355 close(fd: 11                                                          ) = 0
      1402.324 ( 0.002 ms): node/30355 close(fd: 12                                                          ) = 0
      1402.331 ( 0.002 ms): node/30355 close(fd: 9                                                           ) = 0
      1402.341 ( 0.007 ms): node/30355 madvise(start: 0x7fc2006ae000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1402.351 (         ): node/30355 exit(                                                                 )
       281.999 (1121.739 ms): node/30362  ... [continued]: futex()) = 0
      1403.750 ( 0.008 ms): node/30362 futex(uaddr: 0x2c97aa4, op: WAKE_OP|PRIV, val: 1, utime: 0x1, uaddr2: 0x2c97aa0, val3: 0x4000001d) = 1
      1403.760 ( 0.002 ms): node/30362 futex(uaddr: 0x2c97a60, op: WAKE|PRIV, val: 1                         ) = 0
      1403.766 ( 0.004 ms): node/30362 madvise(start: 0x7fc1f8ffa000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1403.772 (         ): node/30362 exit(                                                                 )
       282.093 (1121.731 ms): node/30364  ... [continued]: futex()) = 0
      1403.831 ( 0.009 ms): node/30364 futex(uaddr: 0x2c97aa4, op: WAKE_OP|PRIV, val: 1, utime: 0x1, uaddr2: 0x2c97aa0, val3: 0x4000001d) = 1
      1403.842 ( 0.002 ms): node/30364 futex(uaddr: 0x2c97a60, op: WAKE|PRIV, val: 1                         ) = 0
      1403.846 ( 0.004 ms): node/30364 madvise(start: 0x7fc1eb7ff000, len_in: 8368128, behavior: MADV_DONTNEED) = 0
      1403.852 (         ): node/30364 exit(                                                                 )
        13.769 (1390.637 ms): node/30360  ... [continued]: futex()) = -1 (unknown) INTERNAL ERROR: strerror_r(512, [buf], 128)=22

    是看到了一些眉目但是还是不确定如何解决,然后就github issue 搜了下,发现类似问题不少,从说明来说是关于source-map 插件的是和rust 集成有关系

    解决方法

    很简单,临时解决方法就是添加环境变量PARCEL_WORKER_BACKEND=process 问题临时解决了,rust 是不错,但是rust与外部集成也是有问题的(parcel
    不少扩展使用了rust 扩展)

    参考资料

    https://github.com/parcel-bundler/parcel/issues/7598
    https://github.com/parcel-bundler/source-map/pull/91

  • 相关阅读:
    【cocos】添加监听函数,先使用handle封装函数更优
    【cocos】PC端没问题,移动端人物模型消失
    【lua】lua string.match 和 string.split 从字符串中寻找特定字符串并保存
    APP测试通用用例--我的(用户角色全选、资料、修改密码、版本更新、消息提醒、关于APP、清除缓存等)
    APP通用测试用例(一)-登录和页面展示
    Django学习(一)-sign下的Hello Django!
    Django学习(一)
    如何快速去掉word中的文字被标红或者是显示成下划线
    在与SQLServer建立连接时出现与网络相关的或特定于实例的错误解决
    使用mdf和ldf附加还原SQL Server数据文件
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16882110.html
Copyright © 2020-2023  润新知