由于各种你懂的原因,訪问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. 【docker】linux系统centOS 7上安装docker

    要求: 一个centOS 7系统  虚拟就上安装CentOS 7步骤 本文操作在本机上使用xshell连接虚拟机上的centOS 7进行操作 1.Docker 要求 CentOS 系统的内核版本高于 ...

  2. 编码原则:必须使用的 TODO

    结构 // TODO:JS ParentId 不要使用硬编码. var parentId = record.get('ParentId'); var parentNode = me.getStore( ...

  3. [GIt] 团队工作效率分析工具gitstats

    copy : http://www.cnblogs.com/ToDoToTry/p/4311637.html 如果你是团队领导,关心团队的开发效率和工作激情:如果你是开源软件开发者,维护者某个repo ...

  4. Spring Validation

    Spring Validation模块用于表单数据验证配置,示例如下 依赖Jar包 <dependency> <groupId>javax.validation</gro ...

  5. 22.线程通信Condition

    Condition     通过此对象可以与lock实现组合使用,为每个对象提供多个等待,实现多个阻塞队列. package dmeo9; import java.util.concurrent.lo ...

  6. 【BZOJ】【2527】【POI2011】Meteors

    整体二分+树状数组 整体二分……感谢zyf提供的入门题 简单粗暴的做法:枚举每一个国家,二分他的$w_i$,然后计算……然而这样效率很低…… 整体二分就是:对所有的国家一起进行二分,$w_i$在mid ...

  7. 附1 rabbitmq常用命令

    1.rabbitmq的启动和停止 rabbitmq-server (前台启动) rabbitmq-server -detached(后台启动) rabbitmqctl stop(停止) 2.查看rab ...

  8. JAVASCRIPT加密方法,JS加密解密综述(7种)

    一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...

  9. Android -- 点击双下返回退出程序

    背景                                                                                           现在好多apk ...

  10. 给MySQL中某表增加一个新字段,设为主键值为自动增长。

    alter table test_tb  add ID int(10) primary key AUTO_INCREMENT; 设定完成后,原有记录的该字段会增加并自动设上值.以后的值会在已有记录的最 ...