-
-
Notifications
You must be signed in to change notification settings - Fork 816
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bad light userdata pointer #914
Comments
哦 你是 arm64的linux,这个之前可以 只不过好久没测了,可能后来bytecode的改动导致了问题,你可以先其他机器上 xmake project -k cmake 生成cmakelists来编译试试 我现在没环境,等部署好环境我才能测试下。 |
你可以先自己拉取代码编译装,跳过bytecode gen应该是可以过掉这个问题的 你先试试 git clone https://github.com/xmake-io/xmake.git
cd ./xmake
git submodule update --init
make build
make install |
那等周一我再看下,现在我没arm64的环境 |
看着跟arm64下 linux kernel 的虚拟地址超过48bits 存储到lightdata之后会出问题,一些相关workaround方案: LuaJIT/LuaJIT#230 不过我搞了个ubuntu arm64的环境,似乎一切正常,可以正常安装运行,还是没法复现问题。。我得先尝试复现下 才能想办法看看怎么修复。 |
好的,我明天看一下解决方案。我这个平台感觉还不完全是arm64的架构,因为我在jetson nano上是正常的。jetson nano是完全正常的arm64架构。树莓派的话,我在raspberry pi官方32位系统上是完全正常的。但是rasbian系统对多线程支持度不好,所以重新刷入了Ubuntu server18.04 64位的系统,然后就出问题了。你要不尝试在qemu下仿真一下树莓派4用Ubuntu server引导一下。 |
要不你试下ubuntu server 18.04吧,下载页面, |
感觉好折腾,暂时没这么多时间捣鼓环境,如果有直接可用的docker image就好了,等回头有时间我再看看吧。 |
我在raspi64分支加了点log,先确认下到底是哪几处lua_pushlightuserdata处理的pointer超过了 47bits,我回头直接改好了。折腾环境太浪费时间了 git fetch origin raspi64
git checkout raspi64
make build
source ./script/srcenv.profile <-- 直接加载本地源码编译的xmake环境,无需安装,这里面也会执行 xmake --version 应该就会报错
xmake --version 然后把所有log发我看下。 |
这个是执行 [xmake]: [file_open]: xm_io_file_open: lua_pushlightuserdata: 0xaaaad75802b0
error: bad light userdata pointer
[xmake]: [file_open]: xm_io_file_open: lua_pushlightuserdata: 0xaaaae553e2b0
error: bad light userdata pointer
[xmake]: [file_open]: xm_io_file_open: lua_pushlightuserdata: 0xaaaae01852b0
error: bad light userdata pointer
|
我这里找到了一个qemu的脚本测试通过了。在系统里面尝试安装xmake碰到了相同的问题。 sudo apt-get install cloud-image-utils qemu-system-arm qemu-efi
# Get the image.
img=ubuntu-18.04-server-cloudimg-arm64.img
if [ ! -f "$img" ]; then
wget "https://cloud-images.ubuntu.com/releases/18.04/release/${img}"
qemu-img resize "$img" +128G
fi
# For the password.
user_data=user-data.img
if [ ! -f "$user_data" ]; then
cat >user-data <<EOF
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
EOF
cloud-localds "$user_data" user-data
# Use the EFI magic. Picked up from:
# https://wiki.ubuntu.com/ARM64/QEMU
dd if=/dev/zero of=flash0.img bs=1M count=64
dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=flash0.img conv=notrunc
dd if=/dev/zero of=flash1.img bs=1M count=64
fi
qemu-system-aarch64 \
-M virt \
-cpu cortex-a57 \
-device rtl8139,netdev=net0 \
-m 4096 \
-netdev user,id=net0 \
-nographic \
-smp 4 \
-drive "if=none,file=${img},id=hd0" \
-device virtio-blk-device,drive=hd0 \
-drive "file=${user_data},format=raw" \
-pflash flash0.img \
-pflash flash1.img \
; 直接执行运行即可。我在ubuntu18.04下执行通过了。登录的账号是 |
我这里是mac环境,这个脚本跑不起来,cloud-localds没这命令,user-data.img也没有, QEMU_EFI.fd我倒是下了一个。不过mac的dd也跟linux的不同,反正改动还挺多,就不折腾了。。 大概我也知道了,反正是pointer值过大的问题,xmake里面就那么几处用了lightuserdata,回头我改下就好 |
这块牵扯的东西还比较多,可能要花点时间改下 等改完你再试试 |
我改了下,应该可以了的,你拉下dev分支源码安装下试试,我对lua_pushlightuserdata做了层workaround wrap,但仅对于47bits高地址pointer生效,所以平常的arm64/x86_64设备基本上还是走原来的逻辑。 只有部分存在高地址的aarch64设备才会切到workaround模式。 Lines 45 to 82 in 96b0eae
|
非常感谢,现在测试成功了。有一个其他的问题,就是为啥我进行编译的时候总是提醒我要安装openssl呢,而我没有用到相关的内容。 |
那是因为你执行的是 get.sh 那个一键安装脚本,这个会自动安装一些build需要的基础依赖,比如git, gcc啥的,可能git啥的内部依赖带上了openssl吧。。 Line 152 in db31246
|
是这样的,就是我在输入 |
那就要看你add_requires加了哪些依赖库了 有些依赖库内部会依赖openssl |
这是另外一个问题 如果觉得有问题 那就提个issues |
好的,谢谢 |
这两天,luajit作者终于修掉这个问题了 LuaJIT/LuaJIT@e9af1abec54 不必再用workaround方案了,不过要升级下luajit才行,前阵子刚升级了一遍,蛋疼~ 等回头空了,我再升级一波好了 |
我升级了luajit 并且去除了之前的workaround patch,你可以再更新到dev试试,应该还是可以正常运行的 |
好的,感谢。等过两天回学校试一下 |
好的,感谢。Dev分支我重新编译了一下是可以正常编译安装的 |
arm64上运行也正常吗? |
是的,在树莓派4b上跑的,OS是ubuntu server18.04 |
描述问题
当执行
bash <(curl -fsSL https://xmake.io/shget.text)
进行xmake编译时遇到下面的问题:我在其他地方见到了类似的错误torch/torch7#1035 和 neovim/neovim#7879
从这两个帖子可以看出来应该是lua的问题,但是我不确定该怎么处理,不确定xmake是否可以避免该问题。如果不可以的是否有什么方法可以将xmake的工程转成cmake之类的工程的命令吗?
期待的结果
可以在ubuntu18.04 server aarch64上正常安装xmake。
相关环境
The text was updated successfully, but these errors were encountered: