tsmc 发表于 2018-4-7 08:31:22

求助WCG无法连接网络的问题

本人求助各位大神,现在的情况是计算机算WCG一直显示通讯被推迟的情况,无法下载任务,烦请大家帮忙看看,谢谢啦!(boinc版本7.8.3.6)



0xCAFEBABE 发表于 2018-4-7 08:51:13

把项目删掉重新添加一下。
如果还是不行就添加一个其它项目看看是否正常。

tsmc 发表于 2018-4-7 08:55:58

0xCAFEBABE 发表于 2018-4-7 08:51
把项目删掉重新添加一下。
如果还是不行就添加一个其它项目看看是否正常。 ...

删除过了,还是这样,其他项目也是一样

金鹏 发表于 2018-4-7 15:35:26

本帖最后由 金鹏 于 2018-4-7 15:37 编辑

其他设置呢?比如




vardrag 发表于 2018-4-7 16:56:48

把程序彻底删除(清理注册表)重装试试,连不上服务器的日志信息好像不是这样的

昂宿星团人 发表于 2018-4-7 18:43:31

couldn't create host record in database ...楼主你在wcg官网上能访问自己的用户页面吗

tsmc 发表于 2018-4-7 22:00:09

金鹏 发表于 2018-4-7 15:35
其他设置呢?比如

设置是一样的

tsmc 发表于 2018-4-8 08:14:06

昂宿星团人 发表于 2018-4-7 18:43
couldn't create host record in database ...楼主你在wcg官网上能访问自己的用户页面吗

可以上的

tsmc 发表于 2018-4-8 08:23:23

金鹏 发表于 2018-4-7 15:35
其他设置呢?比如

设置都是一样的。另外,今早上boinc有一个提示,不明白什么意思

0xCAFEBABE 发表于 2018-4-8 09:29:10

vardrag 发表于 2018-4-7 16:56
把程序彻底删除(清理注册表)重装试试,连不上服务器的日志信息好像不是这样的 ...

我也同意把程序彻底删除重装试试,日志里报的是数据库访问失败。重装后不要使用账户管理器,手动添加项目。
另外LZ可以换一台电脑试试,以确保账户本身没有问题。

昂宿星团人 发表于 2018-4-8 10:46:16

诶,没用过项目管理器,不懂了。。

tsmc 发表于 2018-4-8 11:28:11

还是不行,已经卸载了,清除了注册表,重新下载,没有用项目管理器,手动添加,还是同样的日志提示

0xCAFEBABE 发表于 2018-4-9 10:53:09

仔细对比了一下LZ和我的日志,只有最后一句“Couldn't create host record in database”最可疑。在代码中查了查,发现是在对 MySql 执行 insert 的时候出错了。函数:sched/handle_request.cpp#authenticate_user()host = g_request->host;
host.id = 0;
host.create_time = time(0);
host.userid = g_reply->user.id;
host.rpc_seqno = 0;
host.expavg_time = time(0);
safe_strcpy(host.venue, g_reply->user.venue);
host.fix_nans();
retval = host.insert();
if (retval) {
    g_reply->insert_message(
      "Couldn't create host record in database", "low"
    );
    boinc_db.print_error("host.insert()");
    log_messages.printf(MSG_CRITICAL, "host.insert() failed\n");
    return retval;
}这个 host 正是 class DB_HOST,DB_HOST 继承自 DB_BASE,于是 host.insert() 调用到了 db/db_base.cpp#insert():int DB_BASE::insert() {
    char vals, query;
    db_print(vals);
    sprintf(query, "insert into %s set %s", table_name, vals);
    return db->do_query(query);
}而此处的 db_print() 是由 DB_HOST 实现的,用来拼装 insert 所需的参数,比较长,这里就不展开了。看看下面的关键地方 db->do_query():int DB_CONN::do_query(const char* p) {
    int retval;
    if (g_print_queries) {
#ifdef _USING_FCGI_
      log_messages.printf(MSG_NORMAL, "query: %s\n", p);
#else
      fprintf(stderr, "query: %s\n", p);
#endif
    }
    retval = mysql_query(mysql, p);
    if (retval) {
      fprintf(stderr, "Database error: %s\nquery=%s\n", error_string(), p);
    }
    return retval;
}应该就是 mysql_query() 这里出错了,但是看不到详细的log,所以没法断定为什么会插入出错。

还有一个疑点,mysql_query() 是在哪里实现的没有找到,我不记得安装 boinc 的时候安装过 mysql,看 boinc 也没有带 mysql 相关的库,甚至在 db/db_base.h 里引用的 mysql.h 也没有找到,莫非追错地方了。。
还有一种可能是某个类继承了 DB_CONN 并且重写了 insert(),但是我并没有找到这样的地方。

我怀疑 LZ 的安装包有没有问题,我的安装包 MD5 值是:22a01b830c145133a8cabe5b55048c94 boinc_7.8.3_windows_x86_64.exe
LZ 可以校验下 MD5 值与我的是否相同。
也可以换一个安装包试试。
或者把这个安装包装到其它电脑上试试。

0xCAFEBABE 发表于 2018-4-9 11:02:46

本帖最后由 0xCAFEBABE 于 2018-4-9 11:05 编辑

还有一个大胆的猜测,如果数据库要求 User 不能为空,即 host.userid 不能为空,若此时 host.userid 恰巧为空就会插入失败。
而若 host.userid 来自于网络,那么如果网络连接失败就会导致 host.userid 为空。
LZ可以把防火墙关闭再试试。

以上纯属猜测,没有追代码,因为在调用 host.insert() 的上面看到了一条注释:// g_reply->user is filled in and valid at this point

tsmc 发表于 2018-4-10 08:24:21

0xCAFEBABE 发表于 2018-4-9 11:02
还有一个大胆的猜测,如果数据库要求 User 不能为空,即 host.userid 不能为空,若此时 host.userid 恰巧为 ...

用的是公司电脑,可能是防火墙的问题,实在是不会折腾了。
页: [1] 2
查看完整版本: 求助WCG无法连接网络的问题

论坛官方淘宝店开业啦~