New issue
Advanced search Search tips

Issue 783188 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression



Sign in to add a comment

GN bootstrap fails to link gn: undefined reference

Reported by yorik....@gmail.com, Nov 9 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36

Steps to reproduce the problem:
Run "python tools/gn/bootstrap/bootstrap.py -v -s --no-clean"

What is the expected behavior?
GN is built

What went wrong?
[363/363] g++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o libevent.a base.a xdg_user_dirs.a gn_lib.a dynamic_annotations.a -Wl,--end-group -lrt -latomic
FAILED: gn
g++ -pthread -o gn -Wl,--start-group tools/gn/gn_main.o libevent.a base.a xdg_user_dirs.a gn_lib.a dynamic_annotations.a -Wl,--end-group -lrt -latomic
base/metrics/field_trial.o: In function `base::ObserverListThreadSafe<base::FieldTrialList::Observer>::NotifyWrapper(base::FieldTrialList::Observer*, base::ObserverListThreadSafe<base::FieldTrialList::Observer>::NotificationData const&)':
field_trial.cc:(.text._ZN4base22ObserverListThreadSafeINS_14FieldTrialList8ObserverEE13NotifyWrapperEPS2_RKNS3_16NotificationDataE[_ZN4base22ObserverListThreadSafeINS_14FieldTrialList8ObserverEE13NotifyWrapperEPS2_RKNS3_16NotificationDataE]+0x101): undefined reference to `base::internal::ObserverListThreadSafeBase::tls_current_notification_'
base/metrics/field_trial.o: In function `base::ObserverListThreadSafe<base::FieldTrialList::Observer>::AddObserver(base::FieldTrialList::Observer*)':
field_trial.cc:(.text._ZN4base22ObserverListThreadSafeINS_14FieldTrialList8ObserverEE11AddObserverEPS2_[_ZN4base22ObserverListThreadSafeINS_14FieldTrialList8ObserverEE11AddObserverEPS2_]+0x493): undefined reference to `base::internal::ObserverListThreadSafeBase::tls_current_notification_'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Did this work before? Yes 63.0.3239.30 - It definitely works on current beta channel

Chrome version: 64.0.3260.2  Channel: dev
OS Version: 
Flash Version: 

After [0] landed, users of base/observer_list_threadsafe.h are required to link with base/observer_list_threadsafe.cc to allocate and initialize static variable base::internal::ObserverListThreadSafeBase::tls_current_notification_.

bootstrap.py has its own list of sources to be built and linked to generate gn and it is missing that file.
Fix is uploaded at [1].

[0] https://chromium-review.googlesource.com/740989
[1] https://chromium-review.googlesource.com/758584
 
Components: Build
Owner: dpranke@chromium.org
Status: Assigned (was: Unconfirmed)
Status: Started (was: Assigned)
Project Member

Comment 3 by bugdroid1@chromium.org, Nov 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/976fe5f366eb4c6bf1af6c1d9c871ba7546cd5bb

commit 976fe5f366eb4c6bf1af6c1d9c871ba7546cd5bb
Author: Yuriy Taraday <yorik.sar@gmail.com>
Date: Mon Nov 13 18:01:51 2017

Add observer_list_threadsafe.cc to gn bootstrap deps

After 24423de1dc711cebf73d097943d2090ce4d8aed7 [0] gn boostrap fails
with

  undefined reference to `base::internal::ObserverListThreadSafeBase::tls_current_notification_'

Add observer_list_threadsafe.cc that contains that static var to
bootstrap.py to make it work again.

[0] https://chromium-review.googlesource.com/740989

Bug:  783188 
Change-Id: Iac583c52b8aed452b3bdd5b33a60857e2e8285b9
Reviewed-on: https://chromium-review.googlesource.com/758584
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515978}
[modify] https://crrev.com/976fe5f366eb4c6bf1af6c1d9c871ba7546cd5bb/AUTHORS
[modify] https://crrev.com/976fe5f366eb4c6bf1af6c1d9c871ba7546cd5bb/tools/gn/bootstrap/bootstrap.py

Status: Fixed (was: Started)

Sign in to add a comment