Giter VIP home page Giter VIP logo

rtc-quickconnect's People

Contributors

aaronik avatar betimer avatar briely avatar damonoehlman avatar dependabot[bot] avatar felixschl avatar jawandarajbir avatar joostverdoorn avatar kumavis avatar magestican avatar markjrodrigues avatar nathanatcoviu avatar nathanoehlman avatar rmjahangeer avatar silviapfeiffer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtc-quickconnect's Issues

option: setHashLocation

I have a single-page-app that utilizes rtc-quickconnect. The hash location is part of the soul of the single page app, and it dies an icky death when it is mettled with. Now that you can manually set a hash/key, the option setHashLocation: false allows me to manually manage the hash/key.

Example usage Confusion

Sorry, this is a really dumb n00b question. I have been struggling to get the basic example usage to work:

var quickconnect = require('rtc-quickconnect');

var opts = {
   room: 'qc-simple-demo',
   debug: true
};

console.log('establishing connection');

quickconnect('http://rtc.io/switchboard/', opts)
  .on('call:started', function(id, pc, data) {
    console.log('we have a new connection to: ' + id);
});

I get the following output:

establishing connection
rtc-signaller: signaller 71041785-91dd-46ec-bd6b-b3094bf018eb received data: /roominfo|{"memberCount":1} 

But I was expecting:

establishing connection
rtc-signaller: signaller 71041785-91dd-46ec-bd6b-b3094bf018eb received data: /roominfo|{"memberCount":1} 
we have a new connection to: //some id

requestChannel fails to register new data channel initiated from peer

The callback from requestChannel is never called when the following code is run at either end of a call. The channel:opened callback is never run on the slave side either.

qc.on('call:started', function(peerId) {
   if (qc.isMaster(peerId)) {
        qc.createDataChannel(newChannel);
    } else {
        qc.requestChannel(peerId, newChannel, function() {
            console.log('requestChannel callback fired');
        });
    }
}

qc.on('channel:opened', function(id, dc) {
    console.log('channel opened');
});

Investigate peers connected to switchboard not finding each other

To recreate the problem:

  1. Connect Peer A
  2. Disrupt Peer A's underlying websocket connection
  3. Peer A will reconnect to the signalling server (and should reannounce)
  4. Connect Peer B to the signalling server (same room as Peer A)

Expected Result:

Peer A and Peer B discover each other and reconnect.

Actual Result:

No discovery and thus no connection.

Possible Causes:

Reconnection logic seems to be only invoked if a signaller.announce call occurs when the signaller has already connected (see https://github.com/rtc-io/rtc-signaller/blob/master/index.js#L204)

Consider attaching an ".internals" eventemitter to a peer connection when it is created

I've been grappling with different ways to communicate events that are happening within a peer connections lifetime that effectively allow an external module to track it's behaviour. While JS offers all kinds of different approaches some feel dirtier than others.

My current thinking is to associate a "pc.internals" property with a newly created peer connection (right after this line: https://github.com/rtc-io/rtc-quickconnect/blob/master/index.js#L301) which is an EventEmitter (probably EventEmitter2 for wildcard event goodness).

This would probably mean a move from EventEmitter3 back to EventEmitter2 across the rtc.io suite, which wouldn't cause a problem so could be rolled out over time...

/cc @nathanoehlman @rtc-io/plugins

Multiple Data Channel Configuration

Currently creating a datachannel using quickconnect is quite simplistic in it's approach (you can only specify { data: true } to get a single data channel).

This should be modified to support specifying additional data channels in the data configuration option. For example, if an array is passed for the value of the attribute this is flagging that multiple data channels are wanted.

A simple case of:

{
  data: ['a', 'b']
}

Would tell quick connect that two data channels were wanted with the default configuration options that are used when calling createDataChannel on the peer connection.

A more complicated case would allow for setting configuration options for the data channels by using an object for each of the channels:

{
  data: {
    a: {},

    b: {
      reliable: false
    }
  }
}

Prior to implementing this I need to review the various options available with SCTP data channels and look at what functionality can be shared between rtc-quickconnect and rtc-mesh (thus a separate utility module may be created).

Remove a call from the `calls` structure prior to triggering the `call:ended` event

When implementing the apprtc demo I was using the call:ended to check when we had hit a point of 0 calls. Once 0 calls were active I would remove a callactive class from the top level container which influenced the application ui.

Presently, however, the calls object of quickconnect still contains the call that has just ended which makes the logic more complicated than it should be. I think changing this would be a good idea.

Broadcast Behaviour in Firefox

Consider the following call setup, between peers A and B:

  • A has a video stream and adds it to the peer connection
  • B has no video stream

In the case that B is assigned the "master" role from an rtc-signaller perspective, then it will be responsible for creating the initial offer. At the point that A receives this offer, because B has streams in the SDP it will not provide any of its streams in the answer. This is a limitation in the current firefox implementation and as such not supported at this current stage in the rtc.io modules.

A potential fix to this (if Firefox do not support this behaviour soon) is that we can ensure that the peer with the video stream (A) in this case is assigned the master role.

How to add Peer Connection constraints other than iceServers using quickconnect

Hi,

to avoid a range of connection difficulties introduced by IPv6 candidates from Chrome 42 onwards, we want to add the constraint which disables IPv6 candidates in WebRTC in the peerconnection constraints. At a low level with a peerconnection configuration object, we would just include
googIPv6: "false"

It is not obvious from the examples or our usage to-date, if any valid constraint other than iceServers can be handed into quickconnect or exactly how.

.

Adding info or metadata to a stream?

Hi.

I'm looking for a way to add some information about the video stream. Name, user role etc. We're prototyping a simple teacher/student/observer web app.

With current highly automated way of doing so all streams are "anonymous" and i only get a generated ID but not much more.

I've tried adding info to the stream before calling rtcConnection.addStream but i wasn't so lucky.

I can't find the documentation. Do you have a way of identifying which stream is which so i can apply some of our internal logic in there ?

Thank you.

ps: sorry to make this an issue. i could not find another way to communicate. Do you have a slack or irc channel ?

Consider not triggering the `stream:added` event for the `default` Chrome stream

When initiating a peer connection on Chrome, when no "real" streams or data channels have been added to the peer connection before creating an offer a "default" stream is added by Chrome. This stream currently triggers the stream:added event which will generally result on a video element being added to the DOM which is rendered as a black area because the stream itself contains no data.

While I have implemented code to deal with this behaviour within an experimental ui package (rtc-ui) I think that quickconnect should not trigger a stream:added event for this default stream (it is labelled as such and can be detected) as it is not useful for rendering purposes. My understanding is that it exists only so the process of gathering ice candidates and establishing connectivity for audio and video streams can be done as quickly as possible.

Tests for master branch failing on firefox

see: rtc-io/rtc-signaller#27

Current thinking - don't implement anything at the signaller level, but if we detect a peer connection that involves firefox (either the local end or remote), then regularly send /ping messages over the wire and if not detected for 3 * interval end the call.

Connecting to a turn server

Hi Damon,

I recently ran into an issue where my connection to a turn server appears to be failing, and I suppose it is my configuration. Could you check if it is supposed to work like this?

conference = RTC({
  constraints: {
    audio: true,
    video: true
  },
  signaller: signaller,
  room: room,
  ice: [
    {url: "stun:server.foo:3478"},
    {
      url: "turn:server.foo:3478",
      username: "turnuser",
      credential: "turnpassword",
    },
  ],
  localContainer: '#localVideo',
  remoteContainer: '#remoteVideo',
  options: {}
});

ice configuration is based on http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

{
  'iceServers': [
    {
      'url': 'stun:stun.l.google.com:19302'
    },
    {
      'url': 'turn:192.158.29.39:3478?transport=udp',
      'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
      'username': '28224511:1379330808'
    },
    {
      'url': 'turn:192.158.29.39:3478?transport=tcp',
      'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
      'username': '28224511:1379330808'
    }
  ]
}

channel:opened event not firing

Repro below with the example code from the README. This is tested in both Chrome and Firefox Developer Edition. There are no error messages and nothing that appears useful in the debug output.

var freeice = require('freeice');
var quickconnect = require('rtc-quickconnect');
var opts = {
  room: 'qcexample-dctest',
  // debug: true,
  iceServers: freeice()
};

quickconnect('http://rtc.io/switchboard/', opts)
  // tell quickconnect we want a datachannel called test
  .createDataChannel('test')
  // when the test channel is open, let us know
  .on('channel:opened:test', function(id, dc) {
    dc.onmessage = function(evt) {
      console.log('peer ' + id + ' says: ' + evt.data);
    };

    console.log('test dc open for peer: ' + id); // This never fires.
    dc.send('hi');
  });

Improved Firefox Support

WebRTC in firefox is implemented a little differently to chrome. Specifically:

  • RTCPeerConnection objects cannot create an offer unless they have either a media stream or a data channel created in the connection.
  • The onnegotiationneeded event is not generally supported (at least not in stable or beta), which means the way that quickconnect works will fail in firefox.

As such, I'm considering some API changes to quickconnect. The changes would make quickconnect simpler to use and bring some of the power that glue has along - the trade off being that the module tree would become a little heavier (i.e. comparable with glue).

I don't think this would be a problem overall, as someone interested in a lighter module tree could easily use rtc to implement their specific requirements, especially considering that #5 will likely be implemented at the rtc module layer anyway.

Should be able to specify a single, adaptable "ice" option which performs iceServer configuration

In looking at making the rtc module as friendly as possible, I'd like to update quickconnect to support a single ice configuration options which behaves in the following way:

  • If provided with an array value, then this value is mapped directly to the iceServers option when creating a connection using the rtc-tools module.
  • If provided with a function, then we expect the following function format fn(opts?, callback) and the callback is an error first callback providing iceServers when no error is encountered. This would enable easy integration with the xirsys for provision of iceServers.

Error when no options passed

At present, a call to quickconnect(signallingUrl) fails as part of the quickconnect logic is expecting opts to always be present.

Will not re-establish a connection with a previously known peer (same signaller id)

The current implementation of quickconnect doesn't acknowledge a connection attempt with a previously known peer (or so it seems).

Steps to reproduce:

  • Create a connection between two quickconnect instances
  • On one side complete the following:
    • End calls and leave the current room (announce in an empty room)
    • Announce again in the room that you were previously connected to

The expected behaviour of the above is that a new peer connection is created between the two peers...

Reconnection issue with two devices

Hi,
I have this issue when simulate reconnection device (by refresh the html page):

rtc/couple error (createAnswer):  SetLocalDescription failed: Failed to push down answer transport description. 

For information, one of my device, no have webcam (but audio), Do you have some idea ?

phantom data channels created on peer page reload/reconnect

Run the following code on two browser windows to create a call. Reload the page on one end. On the other end you will see multiple data channel creation events for the new connection, one for the new connection and one for the connection that now does not exist. Problem is more evident if instead of reloading you page back, wait for the connection close event to register on the other end and then page forward to start a new connection.

'use strict'

var quickconnect = require('rtc-quickconnect');
var crel = require('crel');
var qc = quickconnect('https://rtc.io/switchboard/', {
        room: 'phantom-postchannel',
        reactive: true
});

var logger = document.body.appendChild(crel('div'));
function append(msg) {
    crel(logger, crel('p', msg));
}

qc.on('call:started', function(peerId) {
    append('call started with peer ' + peerId);
    append('call master: ' + qc.isMaster(peerId));
    var newChannelId = (peerId < qc.id ? peerId : qc.id) + '-' + (peerId < qc.id ? qc.id : peerId);

    append('creating new datachannel ' + newChannelId);
    qc.createDataChannel(newChannelId);

    append('waiting for channel open');
});

qc.on('call:ended', function(peerId) {
    append('call ended with peer: ' + peerId);
});

qc.on('channel:opened', function(id, dc) {
    append('channel opened, label: ' + dc.label);
});

qc.on('channel:closed', function(id, dc) {
    append('channel closed, label: ' + dc.label);
});

append('waiting for call');

any basic simple working example?

just cant get it to work..

this:

var quickconnect = require('rtc-quickconnect');

give me (do I need to include require.js? there is no info about it but I assume that I should)

Uncaught Error: Module name "rtc-quickconnect" has not been loaded yet for context: _. Use require([])

than I tried to look at the example which didnt work

<script>
quickconnect('https://switchboard.rtc.io/', { room: 'bundle-test' })
  // tell quickconnect we want a datachannel called test
  .createDataChannel('test')
  // when the test channel is open, let us know
  .on('test:open', function(id, dc) {
    dc.onmessage = function(evt) {
      console.log('peer ' + id + ' says: ' + evt.data);
    };
    console.log('test dc open for peer: ' + id);
    dc.send('hi');
  });
</script>

it just return quickconnect is undefind.
what I am missing?

Connection over socket.io?

I've been looking for several days for this, but no luck, so I am just going to ask... Should it be possible to send the messages over socket.io, and are there any hints on how to do so?

I am asking because I have an existing infrastructure that handles authentication and rooms over socket.io. I'd like to preserve this while adding webrtc to the system, which I could not by using the default Primus implementation.

If I understood the code correct I can override the default messenger by calling rtc-quickconnect() and providing a function as the first parameter. This function replaces the rtc-switchboard-messenger and should eventually return a function to create a pull_stream as defined in https://github.com/DamonOehlman/messenger-archetype.

Are you aware of any kind of pull_stream wrapper that works on socket.io connections rather than plain websockets? Is such a thing possible?

Better Event Names for call:started and call:ended

I just had a good discussion with @pedalpete regarding the event names of call:started and call:ended. He expressed some confusion when writing a multiparty application with regards to the call:started event and how it possibly relates to the way we are thinking about the app.

For instance in his app, he considers the first connection made to a peer being the time at which a "call" is started, and subsequent peers are then joining that existing call. Thus he was surprised when he got additional call:started events. I think this is completely reasonable and logical thinking.

One possibility is to move the names to something like the following (which I think is in line with a suggestion made by @balupton some time ago):

  • call:started => peer:connected
  • call:ended => peer:disconnected

One thing to be aware of is that there is an existing event peer:connect which does cause us a bit of an issue, but it might be worth making the change if it makes more sense in the long run. Additionally, the existing peer:connect and peer:couple events are more informational events though could be used by people so we are definitely talking a major version bump for quickconnect (and a well documented one at that).

These existing events could be changed to the following:

peer:connect => peer:connection:create
peer:couple => peer:connection:couple

With all of these potential changes, it would move a lifecycle of (major) peer events within a quickconnect driven application to something that looked like the following:

  • peer:announce - a remote peer has announced themselves on the signalling server
  • peer:connected - a peerconnection has been established from us to a remote peer
  • peer:disconnected - a peer connection has been terminated with a remote peer
  • peer:leave - a remote peer has disconnected from the signalling server

NOTE: The order of the final two events does not have to occur in that order, for instance it is possible for a peer to disconnect from the signalling server and for us to hold a peer connection open to the peer.

Handling ICE Issues

Hey Guys,

Just wondering the best way to handle ICE issues in my application. Every so often I get

 addIceCandidate task failed:  Error processing ICE candidateindex.js:126 (anonymous function)index.js:90 handleFail

This leaves the user with either no sound at all (in the case of a 2 person call) or in some cases a call where you can hear some members but not others.

What's the best way to handle this? I tried adding my own list of stun servers in the iceServers configuration with no avail. I even spun up my own TURN server to try and handle this, however it seems to happen even locally when I have no issues with firewalls connecting from my local machine to my local machine.

Thanks,

Matt

Firefox cannot establish a connection to switchboard

I'm getting the following:

Firefox can't establish a connection to the server at wss://switchboard.rtc.io/.

Everything seems fine in Chrome. I went to the trouble of setting up my own switchboard server on elastic beanstalk and ended up with the exact same results. Fine on Chrome, this error on firefox. Any tips?

Call Audio, Receive Video

Hi, rtc.io is great but, there's a problem:

If someone who doesn't have a webcam (or probably doesnt share it) joins a room with people sharing video in it, he doesn't receive VideoTracks from them.

Properly deal with the "fake / pilot stream" created by Chrome

When quickconnect is used in reactive mode, and no data or media is added prior to creating a connection it is common to see a stream:added event for a fake stream that is added by Chrome to assist with correctly negotiating ice connectivity for the peer connection.

At this stage this new default stream is triggering a stream:added event when first created, but is no stream:removed event when the fake stream is replaced by a real media stream. This needs to be investigated and resolved so that either the stream:added event is never triggered for the connection (see previous investigation in #31) or a stream:removed event is triggered once real media starts to flow (the second approach being more realistic).

ref: rtc-io/rtc-screenshare#2 +@santhoshreddyk

DataChannel Unreliability

I'm testing the datachannel demo in 4 tabs (chrome 31.0.1650.63). Reloading one of the tabs results in the peer event being emitted 100% reliably for each peer. However, the dc:open event is seemingly randomly emitted or not emitted for each peer.

Here are the results of some trials of refreshing 1 of 4 tabs, and waiting ~30s to complete:
[ trial number: N/3 peers established a dataconnection and sent 'hi' ]
0: 1/3 peers
1: 0/3 peers
2: 2/3 peers
3: 1/3 peers
4: 3/3 peers
5: 2/3 peers
6: 2/3 peers
7: 2/3 peers
8: 0/3 peers

What would explain this behavior?

Chrome crashes on some OSX instances when attempting interop with Firefox

On OS X when I run the rtcio-demo-quickconnect app between a FF26 and a Chrome32 or 34 instance, and I start it on Chrome, then add FF room, it crashes Chrome.

I have not been able to replicate this with apprtc, so must be something funny that we do. I'd like to narrow it down so I can register a Chrome bug.

Crash report:
Process: Google Chrome Canary [7238]
Path: /Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary
Identifier: com.google.Chrome.canary
Version: 34.0.1814.0 (1814.0)
Code Type: X86 (Native)
Parent Process: launchd [158]
Responsible: Google Chrome Canary [7238]
User ID: 501

Date/Time: 2014-01-31 13:02:43.136 +1100
OS Version: Mac OS X 10.9.1 (13B42)
Report Version: 11
Anonymous UUID: 23837A6A-75DB-5B20-DFC9-F59C4C24BF6A

Sleep/Wake UUID: 925E7617-8CD5-4004-9EC1-87AF586432F8

Crashed Thread: 38 QTKit: QTBackgroundQueueRun

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000107fa000

VM Regions Near 0x107fa000:
IOKit 0000000010763000-00000000107fa000 [ 604K] rw-/rw- SM=ALI
-->
mapped file 000000001082e000-0000000010980000 [ 1352K] rw-/rwx SM=ALI /private/var/folders//.druG2N

Thread 0:: CrBrowserMain Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x952f3bbb CFRunLoopRunInMode + 123
6 com.apple.HIToolbox 0x930eee2d RunCurrentEventLoopInMode + 259
7 com.apple.HIToolbox 0x930eebb2 ReceiveNextEventCommon + 526
8 com.apple.HIToolbox 0x930ee98d _BlockUntilNextEventMatchingListInModeWithFilter + 92
9 com.apple.AppKit 0x903da5a9 _DPSNextEvent + 1602
10 com.apple.AppKit 0x903d9ad0 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 119
11 com.apple.AppKit 0x903cc35c -[NSApplication run] + 727
12 com.google.Chrome.framework 0x00818ffb 0x67000 + 8069115
13 com.google.Chrome.framework 0x0081890c 0x67000 + 8067340
14 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
15 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
16 com.google.Chrome.framework 0x001c85ee 0x67000 + 1447406
17 com.google.Chrome.framework 0x031a5cd0 0x67000 + 51637456
18 com.google.Chrome.framework 0x031a7dd3 0x67000 + 51645907
19 com.google.Chrome.framework 0x031a1f9e 0x67000 + 51621790
20 com.google.Chrome.framework 0x007eb023 0x67000 + 7880739
21 com.google.Chrome.framework 0x007ebb8f 0x67000 + 7883663
22 com.google.Chrome.framework 0x007eae90 0x67000 + 7880336
23 com.google.Chrome.framework 0x00069ad9 ChromeMain + 41
24 com.google.Chrome.canary 0x00062f78 main + 24
25 com.google.Chrome.canary 0x00062f55 0x62000 + 3925

Thread 1:
0 libsystem_kernel.dylib 0x9736c046 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x918f5dcf _pthread_wqthread + 372
2 libsystem_pthread.dylib 0x918f9cce start_wqthread + 30

Thread 2:: Dispatch queue: com.apple.libdispatch-manager
0 libsystem_kernel.dylib 0x9736c992 kevent64 + 10
1 libdispatch.dylib 0x952688bd _dispatch_mgr_invoke + 238
2 libdispatch.dylib 0x95268556 _dispatch_mgr_thread + 52

Thread 3:
0 libsystem_kernel.dylib 0x9736c046 __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x918f5dcf _pthread_wqthread + 372
2 libsystem_pthread.dylib 0x918f9cce start_wqthread + 30

Thread 4:
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.google.Chrome.framework 0x008116d1 0x67000 + 8038097
3 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
4 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
5 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 5:: NetworkConfigWatcher
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x952f3bbb CFRunLoopRunInMode + 123
6 com.apple.Foundation 0x94e97319 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277
7 com.google.Chrome.framework 0x00818e2f 0x67000 + 8068655
8 com.google.Chrome.framework 0x0081890c 0x67000 + 8067340
9 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
10 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
11 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
12 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
13 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
14 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
15 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
16 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
17 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 6:: DnsConfigService
0 libsystem_kernel.dylib 0x9736c976 kevent + 10
1 com.google.Chrome.framework 0x00899c4b 0x67000 + 8596555
2 com.google.Chrome.framework 0x008978f9 0x67000 + 8587513
3 com.google.Chrome.framework 0x00817b04 0x67000 + 8063748
4 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
5 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
6 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
7 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
8 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
9 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
10 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
11 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
12 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 7:: WorkerPool/22555
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x00889851 0x67000 + 8530001
5 com.google.Chrome.framework 0x00889d8a 0x67000 + 8531338
6 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 8:: WorkerPool/23563
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x00889851 0x67000 + 8530001
5 com.google.Chrome.framework 0x00889d8a 0x67000 + 8531338
6 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 9:: CrShutdownDetector
0 libsystem_kernel.dylib 0x9736cdba __read + 10
1 com.google.Chrome.framework 0x001c9b43 0x67000 + 1452867
2 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
3 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
4 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
5 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 10:: Chrome_DBThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x031b56af 0x67000 + 51701423
12 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
13 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
14 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
15 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
16 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 11:: Chrome_FileThread
0 libsystem_kernel.dylib 0x9736c976 kevent + 10
1 com.google.Chrome.framework 0x00899c4b 0x67000 + 8596555
2 com.google.Chrome.framework 0x008978f9 0x67000 + 8587513
3 com.google.Chrome.framework 0x00817be3 0x67000 + 8063971
4 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
5 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
6 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
7 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
8 com.google.Chrome.framework 0x031b56ef 0x67000 + 51701487
9 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
10 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
11 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
12 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
13 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 12:: Chrome_FileUserBlockingThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x031b572f 0x67000 + 51701551
12 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
13 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
14 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
15 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
16 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 13:: Chrome_ProcessLauncherThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x031b576f 0x67000 + 51701615
12 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
13 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
14 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
15 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
16 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 14:: Chrome_CacheThread
0 libsystem_kernel.dylib 0x9736c976 kevent + 10
1 com.google.Chrome.framework 0x00899c4b 0x67000 + 8596555
2 com.google.Chrome.framework 0x008978f9 0x67000 + 8587513
3 com.google.Chrome.framework 0x00817be3 0x67000 + 8063971
4 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
5 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
6 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
7 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
8 com.google.Chrome.framework 0x031b57af 0x67000 + 51701679
9 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
10 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
11 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
12 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
13 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 15:: Chrome_IOThread
0 com.google.Chrome.framework 0x033e3f80 0x67000 + 53989248
1 com.google.Chrome.framework 0x0318c8ba 0x67000 + 51534010
2 com.google.Chrome.framework 0x00e9c54f 0x67000 + 14898511
3 com.google.Chrome.framework 0x00e9e651 0x67000 + 14906961
4 com.google.Chrome.framework 0x00e9e2f0 0x67000 + 14906096
5 com.google.Chrome.framework 0x00e9afd4 0x67000 + 14893012
6 com.google.Chrome.framework 0x00e9b19d 0x67000 + 14893469
7 com.google.Chrome.framework 0x008179dd 0x67000 + 8063453
8 com.google.Chrome.framework 0x00897b21 0x67000 + 8588065
9 com.google.Chrome.framework 0x00817be3 0x67000 + 8063971
10 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
11 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
12 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
13 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
14 com.google.Chrome.framework 0x031b57ef 0x67000 + 51701743
15 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
16 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
17 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
18 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
19 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 16:: IndexedDB
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x0087f058 0x67000 + 8487000
5 com.google.Chrome.framework 0x0085e383 0x67000 + 8352643
6 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
7 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
8 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
9 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
10 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
11 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
12 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
13 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
14 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 17:: NetworkConfigWatcher
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x952f3bbb CFRunLoopRunInMode + 123
6 com.apple.Foundation 0x94e97319 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277
7 com.google.Chrome.framework 0x00818e2f 0x67000 + 8068655
8 com.google.Chrome.framework 0x0081890c 0x67000 + 8067340
9 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
10 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
11 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
12 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
13 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
14 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
15 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
16 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
17 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 18:: BrowserBlockingWorker1/36867
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 19:: BrowserWatchdog
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x0087f058 0x67000 + 8487000
5 com.google.Chrome.framework 0x0085e383 0x67000 + 8352643
6 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
7 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
8 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
9 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
10 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
11 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
12 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
13 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
14 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 20:: Proxy resolver
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
12 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
13 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
14 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
15 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 21:: MediaStreamDeviceThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
12 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
13 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
14 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
15 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 22:
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.google.Chrome.framework 0x032c2f30 0x67000 + 52805424
3 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
4 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
5 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
6 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 23:: NetworkConfigWatcher
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x952f3bbb CFRunLoopRunInMode + 123
6 com.apple.Foundation 0x94e97319 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277
7 com.google.Chrome.framework 0x00818e2f 0x67000 + 8068655
8 com.google.Chrome.framework 0x0081890c 0x67000 + 8067340
9 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
10 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
11 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
12 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
13 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
14 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
15 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
16 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
17 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 24:: WorkerPool/41731
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x00889851 0x67000 + 8530001
5 com.google.Chrome.framework 0x00889d8a 0x67000 + 8531338
6 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 25:: Proxy resolver
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
12 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
13 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
14 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
15 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 26:: Chrome_SafeBrowsingThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
12 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
13 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
14 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
15 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 27:: Startup watchdog thread Watchdog
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x00888ec4 0x67000 + 8527556
5 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
6 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
7 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
8 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 28:: BrowserBlockingWorker2/44547
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 29:: BrowserBlockingWorker3/44803
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 30:
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x952f3bbb CFRunLoopRunInMode + 123
6 com.apple.AppKit 0x90583f18 _NSEventThread + 283
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 31:: Chrome_HistoryThread
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x0087f058 0x67000 + 8487000
5 com.google.Chrome.framework 0x0085e383 0x67000 + 8352643
6 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
7 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
8 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
9 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
10 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
11 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
12 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
13 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
14 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 32:: WorkerPool/83971
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.google.Chrome.framework 0x0087ebf5 0x67000 + 8485877
4 com.google.Chrome.framework 0x00889851 0x67000 + 8530001
5 com.google.Chrome.framework 0x00889d8a 0x67000 + 8531338
6 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 33:: CachePoolWorker1/93211
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 34:: CachePoolWorker2/98819
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 35:: CachePoolWorker3/84491
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x00883ebb 0x67000 + 8507067
5 com.google.Chrome.framework 0x0088338d 0x67000 + 8504205
6 com.google.Chrome.framework 0x00886463 0x67000 + 8516707
7 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 36:
0 libsystem_kernel.dylib 0x9736bb76 __semwait_signal + 10
1 libsystem_c.dylib 0x95e6305b nanosleep$UNIX2003 + 219
2 libsystem_c.dylib 0x95e62f06 usleep$UNIX2003 + 60
3 com.apple.CoreMediaIO 0x94cabe19 CMIOGraph::OneOrMoreInputUnitsAreReadyToBePulled(bool&) + 701
4 com.apple.CoreMediaIO 0x94cac7da CMIOGraph::DoWork(unsigned long) + 206
5 com.apple.CoreMediaIO 0x94caf5d7 CMIO::Thread::QueuedTWorkThread::DoWork() + 119
6 com.apple.CoreMediaIO 0x94cb9e10 CMIO::Thread::SignaledThread::ThreadLoop() + 150
7 com.apple.CoreMediaIO 0x94cb9d5d CMIO::Thread::SignaledThread::WorkQueuedThreadCallback(void*) + 175
8 com.apple.CoreMedia 0x921b845f figThreadMain + 483
9 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
10 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
11 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 37:
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.CoreFoundation 0x952f4f69 __CFRunLoopServiceMachPort + 169
3 com.apple.CoreFoundation 0x952f4541 __CFRunLoopRun + 1393
4 com.apple.CoreFoundation 0x952f3d5a CFRunLoopRunSpecific + 394
5 com.apple.CoreFoundation 0x953b6461 CFRunLoopRun + 129
6 com.apple.cmio.DAL.VDC-4 0x12ce14e3 0x12cda000 + 29923
7 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
8 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
9 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 38 Crashed:: QTKit: QTBackgroundQueueRun
0 com.google.Chrome.framework 0x02e75d19 0x67000 + 48295193
1 com.google.Chrome.framework 0x02e68306 0x67000 + 48239366
2 com.google.Chrome.framework 0x02e6c3a4 0x67000 + 48255908
3 com.google.Chrome.framework 0x0331a90f 0x67000 + 53164303
4 com.google.Chrome.framework 0x0156fd71 0x67000 + 22056305
5 com.google.Chrome.framework 0x01570d73 0x67000 + 22060403
6 com.apple.QTKit 0x9aa29431 -[QTCaptureDecompressedVideoOutput outputVideoFrame:withSampleBuffer:fromConnection:] + 113
7 com.apple.QTKit 0x9aa2939a -[QTCaptureDecompressedVideoOutput outputVideoFrame:withSampleBuffer:fromConnection:] + 57
8 com.apple.CoreFoundation 0x952b9f5d invoking
+ 29
9 com.apple.CoreFoundation 0x952b9e2b -[NSInvocation invoke] + 315
10 com.apple.QTKit 0x9aa2916f QTBackgroundQueueRun + 454
11 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
12 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
13 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 39:: CVDisplayLink
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d8a _pthread_cond_wait + 837
2 libsystem_pthread.dylib 0x918f7042 pthread_cond_timedwait_relative_np + 47
3 com.apple.CoreVideo 0x9750933d CVDisplayLink::waitUntil(unsigned long long) + 287
4 com.apple.CoreVideo 0x9750842e CVDisplayLink::runIOThread() + 662
5 com.apple.CoreVideo 0x97508180 startIOThread(void*) + 159
6 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
7 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
8 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 40:: PowerSaveBlocker
0 libsystem_kernel.dylib 0x9736b7ca __psynch_cvwait + 10
1 libsystem_pthread.dylib 0x918f6d1d _pthread_cond_wait + 728
2 libsystem_pthread.dylib 0x918f8bd9 pthread_cond_wait$UNIX2003 + 71
3 com.google.Chrome.framework 0x0087eb78 0x67000 + 8485752
4 com.google.Chrome.framework 0x0087f07b 0x67000 + 8487035
5 com.google.Chrome.framework 0x0087ef06 0x67000 + 8486662
6 com.google.Chrome.framework 0x0085e347 0x67000 + 8352583
7 com.google.Chrome.framework 0x0085b231 0x67000 + 8340017
8 com.google.Chrome.framework 0x00871a11 0x67000 + 8432145
9 com.google.Chrome.framework 0x0085afba 0x67000 + 8339386
10 com.google.Chrome.framework 0x00886cf1 0x67000 + 8518897
11 com.google.Chrome.framework 0x00886dd0 0x67000 + 8519120
12 com.google.Chrome.framework 0x00882d85 0x67000 + 8502661
13 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
14 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
15 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 41:: com.apple.audio.IOThread.client
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.audio.CoreAudio 0x9afd2e9a HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned long, unsigned long, mach_msg_header_t_, bool, unsigned int) + 138
3 com.apple.audio.CoreAudio 0x9afcd34e HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 68
4 com.apple.audio.CoreAudio 0x9afcbb27 HALC_ProxyIOContext::IOWorkLoop() + 1111
5 com.apple.audio.CoreAudio 0x9afcb5ff HALC_ProxyIOContext::IOThreadEntry(void_) + 167
6 com.apple.audio.CoreAudio 0x9afd5f52 ___ZN19HALC_ProxyIOContextC2Emj_block_invoke + 20
7 com.apple.audio.CoreAudio 0x9afcb4fb HALB_IOThread::Entry(void*) + 69
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 42:: com.apple.audio.IOThread.client
0 libsystem_kernel.dylib 0x97366f7a mach_msg_trap + 10
1 libsystem_kernel.dylib 0x9736616c mach_msg + 68
2 com.apple.audio.CoreAudio 0x9afd2e9a HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned long, unsigned long, mach_msg_header_t_, bool, unsigned int) + 138
3 com.apple.audio.CoreAudio 0x9afcd34e HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 68
4 com.apple.audio.CoreAudio 0x9afcbb27 HALC_ProxyIOContext::IOWorkLoop() + 1111
5 com.apple.audio.CoreAudio 0x9afcb5ff HALC_ProxyIOContext::IOThreadEntry(void_) + 167
6 com.apple.audio.CoreAudio 0x9afd5f52 ___ZN19HALC_ProxyIOContextC2Emj_block_invoke + 20
7 com.apple.audio.CoreAudio 0x9afcb4fb HALB_IOThread::Entry(void*) + 69
8 libsystem_pthread.dylib 0x918f45fb _pthread_body + 144
9 libsystem_pthread.dylib 0x918f4485 _pthread_start + 130
10 libsystem_pthread.dylib 0x918f9cf2 thread_start + 34

Thread 38 crashed with X86 Thread State (32-bit):
eax: 0x00000a00 ebx: 0x107f9000 ecx: 0x107f9600 edx: 0x10921d80
edi: 0x00000200 esi: 0x00038400 ebp: 0xbbf7cb88 esp: 0xbbf7cb80
ss: 0x00000023 efl: 0x00010206 eip: 0x02e75d19 cs: 0x0000001b
ds: 0x00000023 es: 0x00000023 fs: 0x00000023 gs: 0x0000000f
cr2: 0x107fa000

Logical CPU: 1
Error Code: 0x00000004
Trap Number: 14

Tests Failing

Struggling to identify the root cause at this stage, but tests are failing on firefox atm. Need to grab a block of time (probably a couple of days) to dig in and look into what is going on.

Might also be a good time to investigate whether smokestack is a better choice that testling.

Targetting new datachannel to particular end host

Can createDataChannel() have an optional parameter, targetId, to request a new data channel to just one other participant in the call and not to all as is the current default? It would seem you can do this now by simply calling requestChannel on just one other participant but this would leave extra state on the master end as it attempts to finish connections with other end points that do not want (or know about) the connection.

Setup Travis

Configuration for zuul has been done so we can start to perform CI on quickconnect.

Wait for plugin initialization before announcing

At the present moment, quickconnect does not wait for plugin initialization before announcing to the signalling server. This in turn can create issues where a peer connection might be created prior to the peer connection being ready.

We should update the checkReadyToAnnounce function to also check if we have a plugin applied, and if so, wait for initialization prior to announcing.

Testing several browsers simultaneously

Hi @DamonOehlman ! Got your ping from webrtcftw/goals#8 (comment), this looks very interesting indeed, thank you!

If I understand correctly, I could replace the testling for piri-piri* but I would still need to spawn several browsers in one travis-ci run. If also I understand correctly, what the 'matrix' property in travis-ci.yml does is running through the tests for each browser you selected (not all at the same time), right?

Do you have any idea of how to spawn several browsers in one run? Even tabs would be fine :)

  • piri-piri is just a testing hack I did in order to aggregate the state of all the peers and do my inferences (tests) on the server side

Updating 'iceServers' while call is in progress

Hi Damon,

Is there a way to update new iceServers details to a quickconnect call in progress?
We are trying a time based TURN server authentication mechanism. If a call goes longer than certain period, I need to update iceServers so that any new caller joining the call connects without TURN issues.

Would it be possible to provide a simple method to update iceServers?

Thanks,
Raj

Document the use of sdpfilter

The options in quickconnect can contain an sdpfilter like so:
{
room: channelId,
iceServers: config.connection.iceServers,
sdpfilter: function(sdp) {
console.log('filtering sdp');
return limitBandwidthSDP(sdp);
}
}

Should be documented (maybe even add to the book)

Video & Data channel sometimes ends up without data connection

There is a race condition when you try to create a peer connection that does video and data channel. You might end up with one side having a data channel, but the return side doesn't.

I have a feeling that

quickconnect('http://rtc.io/switchboard/', { ns: 'conftest' })
.createDataChannel('chat')
.broadcast(stream)

works better than

quickconnect('http://rtc.io/switchboard/', { ns: 'conftest' })
.broadcast(stream)
.createDataChannel('chat')

but I still think that sometimes broadcast(stream) is faster than the data channel creation and thus you end up with a peer connection that doesn't have a data channel.

Any known impact of upcoming Chrome 44 release

Hi Damon,

As you might be aware of next chrome version bring major changes to webrtc api -
https://groups.google.com/forum/#!msg/discuss-webrtc/mrLyXc6Y464/sxuFb-qb4u0J

So far, we have made couple of test calls between chrome 43 (stable) and chrome 44 (beta) . It looks good so far.

Are you aware of any impact of this chrome release on rtc.io ?
Are there any tests you can think of that we can run in order to be better prepared for Chrome 44?

Thanks,
Raj

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.