X Error of failed request: BadValue (integer parameter out of range for operation)踩坑手札

在运行launch文件时发现无法启动gazebo,用roscore & rosrun gazebo_ros gazebo和gazebo指令均无法启动,显示报错:

X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  151 (GLX)
...(后面报错应该不一样)
 Value in failed request:  0x17
  Serial number of failed request:  11
  Current serial number in output stream:  11

网上搜索到一种可能:

显卡驱动有问题,导致gazebo这样的图形化界面无法启动,需要修复。

终端输入指令(显卡驱动根据自己版本进行更改,比如我的是470):

sudo apt install libnvidia-gl-470:i386

虽然显示确实安装了一个修复包,但是仍然报同样的错误。

于是采用重启大法!!

重启后卡在

 started user manager for UID 121

报错可能情况,尝试:

(1)存储空间满了,需要删除一些文件腾出必要空间来。

强行关机,重启后进入Ubuntu选项。
在这里插入图片描述
进入recovery mode(选择第二项 recovery mode)
在这里插入图片描述
启动recovery mode后,选择root进入命令行模式(root用户)
在这里插入图片描述
按照提示点击回车enter进入root终端
输入:

df -h

查看磁盘使用情况,若/dev/sda1 已用为100%,则需删除磁盘内一些大文件(下面的是我已经处理好了,如何删除:rm -r 文件目录/文件名),直至为95%左右,此时可以正常启动ubuntu了。

如果冗余空间还很多,那么尝试以下步骤:

(2)在修复页面dpkg: Repair broken packages

强制重启时进入UBUNTU高级选项(advanced options)
(一般为从上往下第二项,就在ubuntu启动项的下边)
在这里插入图片描述
然后选择后面有recovery的选项进入recovery模式:
(1)先选择network连接网络(修复过程需要联网);
(2)再选择dpkg进行自动修复
(3)然后点击resueme就可以正常启动了。
在这里插入图片描述
注意: 点击resume后会黑屏一会儿,等待其启动Ubuntu系统,直至出现登录用户界面,输入密码,成功进入Ubuntu桌面!
随后启动gazebo发现已经不会报错,成功解决!

参考blog以及外网论坛解决方案:

https://clay-atlas.com/us/blog/2021/07/23/linux-en-x-error-failed-request-glxbadcontext/
https://blog.csdn.net/qq_40305944/article/details/120606532
https://blog.csdn.net/p1279030826/article/details/115322896
https://blog.csdn.net/weixin_38765304/article/details/108462032

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,你的问题是关于Python函数第二次运行报错和retry的简单用法。 首先,如果一个Python函数在第二次运行时出现了错误,可能是由于函数内部的变量状态发生了变化,导致程序出错。为了解决这个问题,可以使用retry功能来多次尝试运行该函数,直到它成功为止。 使用retry功能可以在函数出现错误时自动重试,可以避免手动重复运行该函数,从而提高效率。 下面是一个简单的示例代码,演示了如何使用retry功能: ```python import time from retry import retry @retry(delay=1, backoff=2, max_delay=4) def my_func(): print("Running my_func...") # 模拟函数出错 if time.time() % 2 == 0: raise ValueError("Oops! Something went wrong...") else: print("Success!") my_func() ``` 在这个示例代码中,我们使用了retry库中的retry装饰器来装饰my_func函数,该函数会运行多次,直到成功为止。在retry装饰器中,我们设置了最大延迟时间为4秒,每次重试前等待1秒,重试间隔时间呈指数级增长,即第一次重试后等待1秒,第二次重试后等待2秒,第三次重试后等待4秒,以此类推,直到达到最大延迟时间为止。 当my_func函数第一次运行时,它会输出“Running my_func...”和“Success!”,并正常结束。当函数第二次运行时,它会抛出一个ValueError异常,并重试多次,直到成功为止。 希望这个简单的示例可以帮助你理解如何使用retry功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值