无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 13336|回复: 49
打印 上一主题 下一主题

[求助] 疑似grub4dos比较大的bug

  [复制链接]
跳转到指定楼层
1#
发表于 2013-6-25 03:01:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sratlf 于 2013-6-25 03:16 编辑

1,下面测试用的脚本  文件夹含有少量文件时不会发生下面截图的错误  过多的时候会执行错误
2,06-24 0.45c版在vmware虚拟机启动失败  卡死时出现光标  但没出现Running menu commands(hangup means you have a problematic config)...提示
  1. !BAT
  2. ls (hd0,0)/winxp/windows/system32/ | call :automake %0
  3. exit

  4. :automake
  5. echo A
  6. setlocal
  7. echo B
  8. exit
复制代码
下面截图是多个版本的测试  暂时还没找到是从哪个版本开始出现问题的




dir.zip

8.02 KB, 下载次数: 3, 下载积分: 无忧币 -2

(hd0,0)/winxp/windows/system32/下文件列表

2#
发表于 2013-6-25 10:41:43 | 只看该作者
批处理脚本不要带UTF-8签名..
注意看截图!BAT前面还有字符,所以认为这不是一个合法的批处理 文件.

点评

应该不是签名的问题 有换用ansi编码 错误提示是一样的 而且无论是utf8签名还是ansi 脚本都能执行 错误是在输出A以后执行setlocal时产生的  详情 回复 发表于 2013-6-25 10:46
回复

使用道具 举报

3#
 楼主| 发表于 2013-6-25 10:46:36 | 只看该作者
chenall 发表于 2013-6-25 10:41
批处理脚本不要带UTF-8签名..
注意看截图!BAT前面还有字符,所以认为这不是一个合法的批处理 文件.

应该不是签名的问题  有换用ansi编码  错误提示是一样的

而且无论是utf8签名还是ansi  脚本都能执行  错误是在输出A以后执行setlocal时产生的
回复

使用道具 举报

4#
发表于 2013-6-25 11:03:41 | 只看该作者
你有条件再测试一下,使用debug 3.

我预计到30号才有时间.

点评

测试了最新的几个版本 先看下结果吧 0.46a版测试 0624的测试结果最奇怪 debug 3情况下能正常执行 其他情况会报错 错误截图在#1 几个版本都不正常 再之前的版本有丢失文件的bug 找不到测试用的  详情 回复 发表于 2013-6-25 11:38
回复

使用道具 举报

5#
 楼主| 发表于 2013-6-25 11:38:12 | 只看该作者
chenall 发表于 2013-6-25 11:03
你有条件再测试一下,使用debug 3.

我预计到30号才有时间.

测试了最新的几个版本  先看下结果吧

0.46a版测试
0624的测试结果最奇怪  debug 3情况下能正常执行  其他情况会报错  错误截图在#1

几个版本都不正常





再之前的版本有丢失文件的bug  找不到测试用的test.bat脚本。。。 就没有测试

0.45c版测试
0624版vmware启动失败  卡死时有光标  但没hangup means...提示
0419及之前的版本正常  0521版出错



回复

使用道具 举报

6#
发表于 2013-6-25 15:13:13 | 只看该作者
提醒一下,5月21日至6月24日之间没有编译结果。怀疑死机是由 daven  5月24日的改动造成的。

点评

0.46a的有几个 是yaya的usb测试版本 就一次测试了 0.45c的没有  详情 回复 发表于 2013-6-25 16:46
回复

使用道具 举报

7#
 楼主| 发表于 2013-6-25 16:46:48 | 只看该作者
不点 发表于 2013-6-25 15:13
提醒一下,5月21日至6月24日之间没有编译结果。怀疑死机是由 daven  5月24日的改动造成的。

0.46a的有几个  是yaya的usb测试版本  就一次测试了  0.45c的没有
回复

使用道具 举报

8#
发表于 2013-6-25 18:06:26 | 只看该作者
因为 daven 的改动,我粗略看了代码,当时就有一种感觉,改动太大,有可能造成启动时便发生死机的问题。chenall 说他已经检验过了。但我怀疑 chenall 并未彻底检验。

其他改动,都不至于影响到启动死机的问题。如果找不到导致死机的原因,并且能够确定是 daven 的改动引起的,那只好废除 daven 的改动。等待 chenall 安排一个测试流程,确定到底是什么原因导致死机的。

回复

使用道具 举报

9#
发表于 2013-6-29 11:58:20 | 只看该作者
本帖最后由 chenall 于 2013-6-29 11:59 编辑

首先看了第一个问题,这个应该是内存溢出了(冲突了),以前的版本没有体现出来.(这个文件太多的话建议还是分段加载,否则肯定没有办法全部加载完,多的会被截掉,需要自己注意),当然了也需要找到哪里的内存冲突了.

第二个问题,VMWARE启动失败,你是使用什么方式启动的?用软盘启动正常.用光盘失败.
我试了用ISO启动无论是QEMU还是VMWARE都会失败,原因是由于R348的改动引起的
下面的那个6144改成其它的任意值都会导致开机失败(新版的是0X8000,我改成6144之后正常,改成其它的就失败.),对ASM还有启动过程不了解,等不点查看下.
movw        $((grldr_signature - _start1 + 4 + STAGE2_SIZE - 1 + 6144)

点评

以前|有限制的时候会截断 后来|无限制就忽略这个了 vmware的话是iso joliet格式 参数如下 mkisofs.exe -o MaxBOOTt.ISO -V "MaxBOOT" -J -joliet-long -hide-joliet boot.catalog -l -relaxed-filenames -gb  详情 回复 发表于 2013-6-29 14:13
6144 改成 0x8000,肯定没错。估计是你生成 ISO 的方式不对。  详情 回复 发表于 2013-6-29 13:47
回复

使用道具 举报

10#
发表于 2013-6-29 13:47:03 | 只看该作者
chenall 发表于 2013-6-29 11:58
首先看了第一个问题,这个应该是内存溢出了(冲突了),以前的版本没有体现出来.(这个文件太多的话建议还是分段 ...

6144 改成 0x8000,肯定没错。估计是你生成 ISO 的方式不对。
回复

使用道具 举报

11#
 楼主| 发表于 2013-6-29 14:13:05 | 只看该作者
chenall 发表于 2013-6-29 11:58
首先看了第一个问题,这个应该是内存溢出了(冲突了),以前的版本没有体现出来.(这个文件太多的话建议还是分段 ...

以前|有限制的时候会截断  后来|无限制就忽略这个了

vmware的话是iso joliet格式  参数如下

mkisofs.exe -o MaxBOOTt.ISO -V "MaxBOOT" -J -joliet-long -hide-joliet boot.catalog -l -relaxed-filenames -gbk4dos-filenames -gbk4win-filenames -no-emul-boot -b GRLDR boot

点评

先试试这个,应该解决内存冲突问题,BAT CALL 的参数长度现在允许最多达到32KB(正常情况下足够使用了),超过的话会报错.(以前只有4KB,但由于程序中没有进行判断,如果超过4KB的话就会溢出了.)  详情 回复 发表于 2013-6-29 15:29
回复

使用道具 举报

12#
发表于 2013-6-29 14:39:43 | 只看该作者
这条mkisofs命令,似乎也没错。再加上 -boot-load-size 4,据说能够适应于所有的 bios。

你生成的 iso,在别的虚拟机下能启动吗?在真实机下能启动吗?

如果能,那就说明我们刚好又碰上了 vmware 的某个未知 bug 了。

点评

别的虚拟机和实机都还没测试 只有0624的0.45c会卡住 之前的版本还有0624的0.46a都没问题  详情 回复 发表于 2013-6-29 15:31
回复

使用道具 举报

13#
发表于 2013-6-29 15:29:18 | 只看该作者
sratlf 发表于 2013-6-29 14:13
以前|有限制的时候会截断  后来|无限制就忽略这个了

vmware的话是iso joliet格式  参数如下

先试试这个,应该解决内存冲突问题,BAT CALL 的参数长度现在允许最多达到32KB(正常情况下足够使用了),超过的话会报错.(以前只有4KB,但由于程序中没有进行判断,如果超过4KB的话就会溢出了.)

grub4dos-0.4.5c.rar

275.95 KB, 下载次数: 6, 下载积分: 无忧币 -2

点评

能提供0.46a的吗 0.45c的在vmware还是卡死。。。 没法测试  详情 回复 发表于 2013-6-29 15:35
回复

使用道具 举报

14#
 楼主| 发表于 2013-6-29 15:31:34 | 只看该作者
不点 发表于 2013-6-29 14:39
这条mkisofs命令,似乎也没错。再加上 -boot-load-size 4,据说能够适应于所有的 bios。

你生成的 iso, ...

别的虚拟机和实机都还没测试  只有0624的0.45c会卡住  之前的版本还有0624的0.46a都没问题
回复

使用道具 举报

15#
 楼主| 发表于 2013-6-29 15:35:03 | 只看该作者
chenall 发表于 2013-6-29 15:29
先试试这个,应该解决内存冲突问题,BAT CALL 的参数长度现在允许最多达到32KB(正常情况下足够使用了),超过 ...

能提供0.46a的吗  0.45c的在vmware还是卡死。。。  没法测试

点评

这个是没有打R348补丁的0.4.5c版本.  详情 回复 发表于 2013-6-29 15:38
回复

使用道具 举报

16#
发表于 2013-6-29 15:38:52 | 只看该作者
sratlf 发表于 2013-6-29 15:35
能提供0.46a的吗  0.45c的在vmware还是卡死。。。  没法测试

这个是没有打R348补丁的0.4.5c版本.

grub4dos-0.4.5c.rar

135.43 KB, 下载次数: 1, 下载积分: 无忧币 -2

点评

你都已经证明 r348 有问题了,何必再让 sratlf 去测试? 真正有意义的,是测试别的虚拟机以及真实机下的情况。 我前面提到,mkisofs 中应该有参数 -boot-load-size 4,成功率最高,也就是说,bios 适应性最高。  详情 回复 发表于 2013-6-29 16:07
貌似还是有问题 这个可以启动了 但是执行脚本的时候各种卡死 每次卡死时命令都不一样 还找不到什么固定规律 而且相对以前的所有版本 这个版本执行内置菜单需要的时间要长的多 默认内置菜单 以前一闪而过的  详情 回复 发表于 2013-6-29 16:05
回复

使用道具 举报

17#
 楼主| 发表于 2013-6-29 16:05:25 | 只看该作者
chenall 发表于 2013-6-29 15:38
这个是没有打R348补丁的0.4.5c版本.

貌似还是有问题  这个可以启动了  但是执行脚本的时候各种卡死  每次卡死时命令都不一样  还找不到什么固定规律

而且相对以前的所有版本  这个版本执行内置菜单需要的时间要长的多  默认内置菜单  以前一闪而过的现在需要三四秒
回复

使用道具 举报

18#
发表于 2013-6-29 16:07:17 | 只看该作者
chenall 发表于 2013-6-29 15:38
这个是没有打R348补丁的0.4.5c版本.

你都已经证明 r348 有问题了,何必再让 sratlf 去测试?

真正有意义的,是测试别的虚拟机以及真实机下的情况。

我前面提到,mkisofs 中应该有参数 -boot-load-size 4,成功率最高,也就是说,bios 适应性最高。请添加这个参数,然后在各个虚拟机和真实机下测试,以便能够找出问题的根源。

把 6144 改成 0x8000 是没错的。问题是碰上 bios 适应性问题了,怀疑有些 bios 不能适应这个改动,而另外的 bios 应该是没问题的。一步一步来,我们先通过测试,确定这一点,然后根据测试的情况反馈,再安排下一个测试。

点评

0624 0.45c 虚拟机下添加-boot-load-size 4参数启动结果还是一样的 依然卡死  详情 回复 发表于 2013-6-29 16:15
前面的测试版本主要是测试内存冲突的问题的.没有处理启动失败问题.  发表于 2013-6-29 16:10
回复

使用道具 举报

19#
 楼主| 发表于 2013-6-29 16:15:02 | 只看该作者
不点 发表于 2013-6-29 16:07
你都已经证明 r348 有问题了,何必再让 sratlf 去测试?

真正有意义的,是测试别的虚拟机以及真实机下 ...

0624 0.45c 虚拟机下添加-boot-load-size 4参数启动结果还是一样的  依然卡死
回复

使用道具 举报

20#
发表于 2013-6-29 16:20:33 | 只看该作者
本帖最后由 不点 于 2013-6-29 16:44 编辑

好的,关于启动失败,请 sratlf 测试多个虚拟机,最好能测试一台真实机。目的是找出一个成功启动、不死机的机器。暂时怀疑,某些 BIOS 占用堆栈空间大,与加载的 grldr 代码发生了冲突。

EDIT:

发现我的代码改动有遗漏,请终止测试启动失败问题。等待我给出修复。
回复

使用道具 举报

21#
发表于 2013-6-29 17:27:17 | 只看该作者
已经修复,附件是修复后的 grldrstart.S 文件,适用于 0.4.5c,不适用于 0.4.6a。

如果测试成功,请 chenall 直接提交。

grldrstart.rar

41.76 KB, 下载次数: 6, 下载积分: 无忧币 -2

0.4.5c 源代码

点评

测试正常,源码先提交了.  详情 回复 发表于 2013-6-29 17:50
回复

使用道具 举报

22#
发表于 2013-6-29 17:50:05 | 只看该作者
本帖最后由 chenall 于 2013-6-29 17:57 编辑
不点 发表于 2013-6-29 17:27
已经修复,附件是修复后的 grldrstart.S 文件,适用于 0.4.5c,不适用于 0.4.6a。

如果测试成功,请 che ...


测试正常,源码先提交了.

grub4dos-0.4.5c.rar

135.4 KB, 下载次数: 23, 下载积分: 无忧币 -2

回复

使用道具 举报

23#
发表于 2013-6-29 17:57:48 | 只看该作者
死机的问题解决了,那么 chenall 接下来应该删除 0.4.5c-2013-06-24 的下载,以免别人再下载这个已经被证明是有问题的版本。

点评

貌似还是有点问题 用的#22的grldr 启动没问题了 但是执行脚本时还是卡死 已在其他版本测试过执行没问题的  详情 回复 发表于 2013-6-30 09:40
回复

使用道具 举报

24#
 楼主| 发表于 2013-6-30 09:40:18 | 只看该作者
不点 发表于 2013-6-29 17:57
死机的问题解决了,那么 chenall 接下来应该删除 0.4.5c-2013-06-24 的下载,以免别人再下载这个已经被证明 ...

貌似还是有点问题  用的#22的grldr  启动没问题了  但是执行脚本时还是卡死  已在其他版本测试过执行没问题的

回复

使用道具 举报

25#
发表于 2013-6-30 11:08:56 | 只看该作者
没道理啊,这个改动不应该影响才对的..

麻烦把可以重现问题的文件打包一份上来,我下午抽空看下.
回复

使用道具 举报

26#
发表于 2013-6-30 12:24:03 | 只看该作者
编译的文件大小为何比以前还大?我记得不点大已经取消了stage1及stage1.5,应该更加精简啊。
我测试srsf6n(22楼的grldr)也卡死,自己用gebian gcc4.8.1-2下载最新源码编译后的grldr测试srsf6n没问题。
是否是编译的问题?
回复

使用道具 举报

27#
发表于 2013-6-30 12:45:42 | 只看该作者
我记得不点大已经取消了stage1及stage1.5,应该更加精简啊。


完全是两回事。源代码精简了,不等于执行码能精简。

我们的执行码中,一直都不存在 stage1 和 stage1.5,所以,执行码根本不受影响。
回复

使用道具 举报

28#
发表于 2013-6-30 17:47:18 | 只看该作者
刚上传的版本应该解决了,,眼花没有注意看,.

点评

貌似还是有点bug 看截图  详情 回复 发表于 2013-7-2 00:27
0630版没有#1的两个问题了 还有个问题忘记说了 用0.45c的grldr启动0.46a的grldr会报错 最近的几个版本都这样  详情 回复 发表于 2013-6-30 18:17
回复

使用道具 举报

29#
 楼主| 发表于 2013-6-30 18:17:10 | 只看该作者
chenall 发表于 2013-6-30 17:47
刚上传的版本应该解决了,,眼花没有注意看,.


0630版没有#1的两个问题了  还有个问题忘记说了  用0.45c的grldr启动0.46a的grldr会报错  最近的几个版本都这样

grldr2是0630 0.46a的grldr改名的

点评

的确如此,用0.46a grldr ---->0.46a grldr 也会报错,非法格式。 (ud)/grldr --------> U可见区 /GRLDR  详情 回复 发表于 2013-6-30 18:20
回复

使用道具 举报

30#
发表于 2013-6-30 18:20:14 | 只看该作者
sratlf 发表于 2013-6-30 18:17
0630版没有#1的两个问题了  还有个问题忘记说了  用0.45c的grldr启动0.46a的grldr会报错  最近的几个版 ...

的确如此,用0.46a grldr  ---->0.46a grldr 也会报错,非法格式。
(ud)/grldr   --------> U可见区 /GRLDR
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-23 17:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表