由于各种你懂的原因,訪问google的服务总是出错,先是hosts不工作。代理也不好使,最后最终能够短暂訪问了。我的版本号还是採用svn维护的,直接svn update也不行。试试git吧,一晚上才下载了120M,这得要猴年马月才干下完那。

找找tarball吧,TNND,尽然google删除了tarball!好在能够通过git的tgz方式变通的拿到tarball。一更新得到提示:ubuntu14.04不支持。算了,再整个30G的空间装个Ubuntu12.04吧,“尝尽了生活的苦。找不到能够相信的人”。

下了个dep_tool又不通了。一执行gclient报错:

gclient runhooks:

/.gclient: line 8: solutions: command not found

./.gclient: line 9: name: command not found

./.gclient: line 10: url: command not found

./.gclient: line 11: custom_deps: command not found

./.gclient: line 16: src/third_party/WebKit/LayoutTests:: No such file or directory

./.gclient: line 17: src/chrome_frame/tools/test/reference_build/chrome:: No such file or directory

./.gclient: line 18: src/chrome/tools/test/reference_build/chrome_mac:: No such file or directory

./.gclient: line 19: src/chrome/tools/test/reference_build/chrome_win:: No such file or directory

./.gclient: line 20: src/chrome/tools/test/reference_build/chrome_linux:: No such file or directory

./.gclient: line 22: syntax error near unexpected token `}'

./.gclient: line 22: `  }'

算了,那就不更新吧,直接在老版本号上build吧:

./build/install-build-deps.sh

提示我64位的kernel编译32位的代码不再获得推荐:

We no longer recommend that you use this script to install

32bit libraries on a 64bit system. Instead, consider using

the install-chroot.sh script to help you set up a 32bit

environment for building and testing 32bit versions of Chrome.



If you nonetheless want to try installing 32bit libraries

directly, you can do so by explicitly passing the --lib32

option to install-build-deps.sh.

Exiting without installing any 32bit libraries.

逗我玩呢。劝我改用install-chroot.sh?

./build/install-chroot.sh

The following targets are available to be installed in a chroot:

   1: breezy

   2: dapper

   3: edgy

  26: stable

  27: testing

  28: trusty

  29: unstable

  30: utopic

  31: vivid

  32: warty

  33: wheezy

  34: woody



You are running a 64bit kernel. This allows you to install either a

32bit or a 64bit chroot environment. Which one do you want (32, 64) 32



I: Retrieving Release

W: Cannot check Release signature; keyring file not available /usr/share/keyrings/debian-archive-keyring.gpg

I: Retrieving Packages

算了,还是取消用这个编译吧:加上--lib32

./build/install-build-deps.sh --lib32

build/gyp_chromium -Dflag1=value1 -Dflag2=value2

然后编译:make chrome -j4

出错了:

net/base/x509_certificate_nss.cc: In function ‘void net::{anonymous}::ParsePrincipal(CERTName*, net::CertPrincipal*)’:

net/base/x509_certificate_nss.cc:75:46: error: invalid conversion from ‘char* (*)(const CERTName*) {aka char* (*)(const CERTNameStr*)}’ to ‘CERTGetNameFunc {aka char* (*)(CERTNameStr*)}’ [-fpermissive]

改之:

  // Get CN, L, S, and C.

#if Michael_Chromium_Patch

      CERTGetNameFunc get_name_funcs[4] = {
(char*(*)(CERTNameStr*))CERT_GetCommonName, (char*(*)(CERTNameStr*))CERT_GetLocalityName,
(char*(*)(CERTNameStr*))CERT_GetStateName, (char*(*)(CERTNameStr*))CERT_GetCountryName };
#else
CERTGetNameFunc get_name_funcs[4] = {
CERT_GetCommonName, CERT_GetLocalityName,
CERT_GetStateName, CERT_GetCountryName }; #endif

make chrome -j

AR(target) out/Debug/obj.target/third_party/WebKit/Source/WebKit/chromium/libwebkit.a

  COPY out/Debug/chrome-wrapper

  ACTION Generating manpage out/Debug/chrome.1

  COPY out/Debug/xdg-mime

  COPY out/Debug/xdg-settings

  COPY out/Debug/product_logo_48.png

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main.o

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_exe_main_gtk.o

  CXX(target) out/Debug/obj.target/chrome/chrome/app/chrome_main_delegate.o

  LINK(target) out/Debug/chrome

                                                                                ^[      LINK(target) out/Debug/chrome: Finished

谢天谢地,最终过了!

cd out/Debug and run chrome

My god! crash :(

[2560:2560:1091621926:FATAL:field_trial.cc(183)] Check failed: next_group_number_ > kDefaultGroupNumber + 1 (1 vs. 1)

Backtrace:

    base::debug::StackTrace::StackTrace() [0x55555743f072]

    logging::LogMessage::~LogMessage() [0x555557469635]

    base::FieldTrial::SetForced() [0x55555742d1b2]

    VariationsService::CreateTrialFromStudy() [0x55555713a558]

    VariationsService::CreateTrialsFromSeed() [0x555557138e28]

    ChromeBrowserMainParts::SetupMetricsAndFieldTrials() [0x5555570da3bd]

    ChromeBrowserMainParts::PreCreateThreadsImpl() [0x5555570ddf1a]

    ChromeBrowserMainParts::PreCreateThreads() [0x5555570dcfea]

    content::BrowserMainLoop::CreateThreads() [0x555559b7c890]

    (anonymous namespace)::BrowserMainRunnerImpl::Initialize() [0x555559b7e97f]

    BrowserMain() [0x555559b7b34b]

    content::RunNamedProcessTypeMain() [0x5555573aff00]

    content::ContentMainRunnerImpl::Run() [0x5555573b0b74]

    content::ContentMain() [0x5555573af573]

    ChromeMain [0x55555668447d]

    main [0x55555668443c]

    0x7ffff203f76d

    0x555556684349

调试一下吧:

gdb chrome and show call stack:

[32321:32321:43801153618:WARNING:zygote_host_impl_linux.cc(165)] Running without the SUID sandbox! See http://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.

[32347:32347:43817254895:INFO:gl_context_glx.cc(135)] Offscreen context was direct.

Segmentation fault (core dumped)

  1. // This will be called after the command-line has been mutated by about:flags
  2. void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() {
  3. MetricsService* metrics = browser_process_->metrics_service();
  4. if (IsMetricsReportingEnabled())
  5. metrics->ForceClientIdCreation();  // Needed below.
  6. field_trial_list_.reset(
  7. new base::FieldTrialList(metrics->GetEntropySource()));
  8. // Ensure any field trials specified on the command line are initialized.
  9. // Also stop the metrics service so that we don't pollute UMA.
  10. #ifndef NDEBUG
  11. const CommandLine* command_line = CommandLine::ForCurrentProcess();
  12. if (command_line->HasSwitch(switches::kForceFieldTrials)) {
  13. std::string persistent = command_line->GetSwitchValueASCII(
  14. switches::kForceFieldTrials);
  15. bool ret = base::FieldTrialList::CreateTrialsFromString(persistent);
  16. CHECK(ret) << "Invalid --" << switches::kForceFieldTrials <<
  17. " list specified.";
  18. }
  19. #endif  // NDEBUG
  20. VariationsService* variations_service =
  21. browser_process_->variations_service();
  22. variations_service->CreateTrialsFromSeed(browser_process_->local_state());
  23. }
  1. void BrowserProcessImpl::CreateLocalState() {
  2. DCHECK(!created_local_state_ && local_state_.get() == NULL);
  3. created_local_state_ = true;
  4. FilePath local_state_path;
  5. PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);
  6. local_state_.reset(
  7. PrefService::CreatePrefService(local_state_path, policy_service(), NULL,
  8. false));
  9. // Initialize the prefs of the local state.
  10. browser::RegisterLocalState(local_state_.get());
  11. }
  1. // TODO(brettw): this function does not handle long paths (filename > MAX_PATH)
  2. // characters). This isn't supported very well by Windows right now, so it is
  3. // moot, but we should keep this in mind for the future.
  4. // static
  5. bool PathService::Get(int key, FilePath* result) {
  6. // special case the current directory because it can never be cached
  7. if (key == base::DIR_CURRENT)
  8. return file_util::GetCurrentDirectory(result);
  9. if (GetFromCache(key, result))
  10. return true;
  11. AddToCache(key, path);
  12. *result = path;
  13. return true;
  14. }

坏蛋最终现身了。注意看路径path_:

p *result

$60 = {static kSeparators = 0x55555ad404c0 "/", static kCurrentDirectory = <same as static member of an already seen type>,

  static kParentDirectory = <same as static member of an already seen type>, static kExtensionSeparator = 46 '.', path_ =

    "/home/michael/.config/chromium/Local State"}

(gdb)

删除这个Local State,chrome就跑起来了,原因就是第一次run起来chrome后,我点击了“是否恢复上次的网页”的是button,导致本地状态解析出错。请看此文件末端的一堆seed数据(它就是老鼠):

Local State:

"uninstall_metrics": {

      "installation_date2": "1426134422",

      "launch_count": "2"

   },

   "user_experience_metrics": {

      "low_entropy_source": 2024,

      "session_id": 1,

      "stability": {

         "breakpad_registration_fail": 2,

         "breakpad_registration_ok": 0,

         "crash_count": 1,

         "debugger_not_present": 2,

         "debugger_present": 0,

         "exited_cleanly": false,

         "incomplete_session_end_count": 0,

         "last_timestamp_sec": "0",

         "launch_count": 2,

         "launch_time_sec": "1426138598",

         "page_load_count": 0,

         "renderer_crash_count": 0,

         "renderer_hang_count": 0,

         "session_end_completed": true,

         "stats_buildtime": "1426159202",

         "stats_version": "21.0.1167.0-64-devel"

      }

   },

   "variations_seed": "CigxMTZhNmMwMTN1Z2dlc3RVbmlmaWNhdGlvbl9BNV9TdGFibGUQARj/k8oBIP......

Chrome 编译错误汇总的更多相关文章

  1. openbmc编译错误汇总,持续更新,建议收藏

    本文汇总自己在编译openbmc时遇到的一些问题及解决思路,希望对有兴趣研究openbmc的同学有一些帮助. 项目地址:https://github.com/openbmc/openbmc 编译步骤: ...

  2. php各种编译错误汇总

    PHP编译安装时常见错误解决办法,php编译常见错误 This article is post on https://coderwall.com/p/ggmpfa configure: error: ...

  3. flash/flex 编译错误汇总

    来源:http://blog.chinaunix.net/uid-366408-id-116463.html 代码 消息 说明   1000 对 %s 的引用不明确. 引用可能指向多项.例如,下面使用 ...

  4. iOS 各种编译错误汇总

    1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...

  5. Android:JACK编译错误汇总及解决

    jack server交互命令: jack-admin start-server jack-admin kill-server jack-admin list-server jack-admin un ...

  6. C++ 中的导致编译错误汇总

    多少年来,各路英雄好汉,八方神犇大佬,在CE中饮恨退役. OI的CE,还是那样熟悉的味道. (博主只能想到这么多,欢迎大家来补充) 1.变量名和内置函数冲突?!?! C++内置函数很多很多,许多你不知 ...

  7. Android入门级编译错误汇总

    1  描写叙述:  项目常常须要引用别人的libraryproject,在选项中add进来后,点击应用或者确定.关闭页面. 回到代码中却发现无法链接,又一次打开properties查看,发现导入的pr ...

  8. MDK5 STM32编译问题汇总

    MDK5 STM32编译问题汇总 WIN8.KEIL-MDK-5 编译时,出现弹窗"The ARM C/C++ Compiler 已停止工作",关闭弹窗后,编译输出的窗口中出现如下 ...

  9. Entity Framework学习笔记——错误汇总

    之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...

随机推荐

  1. Ext表单提示方式:msgTarget

    Ext.QuickTips.init();  Ext.form.Field.prototype.msgTarget = 'side'; Ext表单提示方式:msgTarget:有4中方式:qtip,t ...

  2. CMMI管理体系

    帮助企业对软件工程过程进行管理和改进,增强开发与改进能力,从而按时,不超过预算地开发软件. CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模块框架消除了各个模型的不一致性,减少了 ...

  3. 如何设置eclipse不同的workspace共享配置

    在很多的项目中,每个项目使用一个workspace,结果每新建一个workspace重新配置一下,但是配置的东西都是一样的,烦死了,有什么好办法可以共享一下配置呢? 总结一下,复制工作空间配置步骤如下 ...

  4. restful处理

    重写/覆盖   HTTP 方法 一些HTTP客户端仅能处理简单的的GET和POST请求,为照顾这些功能有限的客户端,API需要一种方式来重写HTTP方法. 尽管没有一些硬性标准来做这事,但流行的惯例是 ...

  5. unity3d-地图制作之光照贴图Lightmapping

    今天无聊随便翻看了暗黑战神的场景资源,发现了一个以前没怎么注意的静态场景优化问题. 什么是静态场景,也就是说这个场景是不会变化.比如MMO游戏中选择人物的场景. 就拿默认的暗黑战神的选择人物场景来看, ...

  6. 数据结构及算法篇bsearch crypt lfind lsearch qsort rand srand

    crypt(将密码或数据编码) 相关函数 getpass 表头文件 #define _XOPEN_SOURCE #include<unistd.h> 定义函数 char * crypt ( ...

  7. 【BZOJ】【3170】【TJOI2103】松鼠聚会

    切比雪夫距离+曼哈顿距离 题解:http://www.cnblogs.com/zyfzyf/p/4105456.html 其实应该先做这题再做[BZOJ][3210]花神的浇花集会的吧…… 我们发现d ...

  8. 混沌数学之ASin模型

    相关软件:混沌数学之离散点集图形DEMO 相关代码: class ASinEquation : public DiscreteEquation { public: ASinEquation() { m ...

  9. 即时通讯之smack客户端配置

    之前学习了通过Openfire+spark+smack的模式来完成我们的即时通讯软件,上次我们已经完成了Openfire的安装和配置,这次我们继续完成我们的客户端部分. 1.首先我们通过百度smack ...

  10. Nginx配置文件(nginx.conf)配置具体解释

    欢迎扫码增加Java高知群交流 Nginx的配置文件nginx.conf配置具体解释例如以下:   user nginx nginx ; Nginx用户及组:用户 组. window下不指定   wo ...