Intermittent devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | single tracking bug
Categories
(DevTools :: Console, defect, P5)
Tracking
(Not tracked)
People
(Reporter: intermittent-bug-filer, Assigned: nchevobbe)
References
(Regression)
Details
(4 keywords, Whiteboard: [retriggered][stockwell disabled][stockwell unknown])
Attachments
(5 files, 1 obsolete file)
Filed by: rmaries [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=273001047&repo=mozilla-central
Full log: https://queue.taskcluster.net/v1/task/fMGthylLTtKxDtrKjPAyGg/runs/0/artifacts/public/logs/live_backing.log
[task 2019-10-25T19:07:58.751Z] 19:07:58 INFO - TEST-START | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js
[task 2019-10-25T19:13:58.944Z] 19:13:58 INFO - Buffered messages logged at 19:09:04
[task 2019-10-25T19:13:58.944Z] 19:13:58 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2019-10-25T19:13:58.944Z] 19:13:58 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2019-10-25T19:13:58.944Z] 19:13:58 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2019-10-25T19:13:58.944Z] 19:13:58 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Buffered messages logged at 19:09:28
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Longer timeout required, waiting longer... Remaining timeouts: 3
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Buffered messages logged at 19:10:58
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Longer timeout required, waiting longer... Remaining timeouts: 2
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Buffered messages logged at 19:12:28
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Longer timeout required, waiting longer... Remaining timeouts: 1
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - Buffered messages finished
[task 2019-10-25T19:13:58.945Z] 19:13:58 INFO - TEST-UNEXPECTED-FAIL | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | Test timed out -
[task 2019-10-25T19:13:58.946Z] 19:13:58 INFO - Removing tab.
[task 2019-10-25T19:13:58.946Z] 19:13:58 INFO - Waiting for event: 'TabClose' on [object XULElement].
[task 2019-10-25T19:13:58.967Z] 19:13:58 INFO - Got event: 'TabClose' on [object XULElement].
[task 2019-10-25T19:13:59.007Z] 19:13:59 INFO - Tab removed and finished closing
[task 2019-10-25T19:13:59.007Z] 19:13:59 INFO - GECKO(10192) | [Parent 6976, Main Thread] WARNING: NS_ENSURE_TRUE(!mInput.IsReferenced()) failed: file z:/build/build/src/netwerk/base/nsSocketTransport2.cpp, line 2501
[task 2019-10-25T19:13:59.087Z] 19:13:59 INFO - TEST-PASS | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | The main process DebuggerServer has no pending connection when the test ends -
[task 2019-10-25T19:13:59.188Z] 19:13:59 INFO - GECKO(10192) | MEMORY STAT | vsize 2104984MB | vsizeMaxContiguous 65455724MB | residentFast 673MB | heapAllocated 247MB
[task 2019-10-25T19:13:59.188Z] 19:13:59 INFO - TEST-OK | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | took 360442ms
[task 2019-10-25T19:13:59.207Z] 19:13:59 INFO - GECKO(10192) | ++DOCSHELL 0000020186585000 == 2 [pid = 2508] [id = {4daadceb-e147-4ab8-8ea1-6979ff5ec884}]
[task 2019-10-25T19:13:59.207Z] 19:13:59 INFO - GECKO(10192) | ++DOMWINDOW == 3 (000002018BB2F980) [pid = 2508] [serial = 223] [outer = 0000000000000000]
[task 2019-10-25T19:13:59.207Z] 19:13:59 INFO - GECKO(10192) | ++DOMWINDOW == 4 (000002018A89A000) [pid = 2508] [serial = 224] [outer = 000002018BB2F980]
[task 2019-10-25T19:13:59.306Z] 19:13:59 INFO - checking window state
[task 2019-10-25T19:13:59.306Z] 19:13:59 INFO - GECKO(10192) | must wait for focus
Comment 1•5 years ago
|
||
:Nicolas, any chance you could take a look? Thank you.
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Updated•5 years ago
|
Comment 3•5 years ago
|
||
Nicolas any updates here?
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 6•5 years ago
|
||
Sorry I was off for a few days. Looking at it now
Assignee | ||
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 8•5 years ago
|
||
Here's a failure that happens on the test:
console.log: "Request to connect to ProcessDescriptor "1678" failed:
Error:
Connection closed, pending request to server1.conn0.processDescriptor1024, type getTarget failed
Request stack:
request@resource://devtools/shared/protocol/Front.js:232:14
generateRequestMethods/</frontProto[name]@resource://devtools/shared/protocol/Front/FrontClassWithSpec.js:49:19
getTarget/this._targetFrontPromise<@resource://devtools/shared/fronts/descriptors/process.js:70:40
getTarget@resource://devtools/shared/fronts/descriptors/process.js:87:7
updateProcessTargets/targets<@resource://devtools/client/debugger/src/client/firefox/targets.js:91:119
updateProcessTargets@resource://devtools/client/debugger/src/client/firefox/targets.js:91:90
async*updateTargets@resource://devtools/client/debugger/src/client/firefox/targets.js:99:11
updateThreads@resource://devtools/client/debugger/src/client/firefox/commands.js:458:36
fetchThreads@resource://devtools/client/debugger/src/client/firefox/commands.js:448:10
updateThreads/<@resource://devtools/client/debugger/src/actions/threads.js:23:34
thunk/</</<@resource://devtools/client/debugger/src/actions/utils/middleware/thunk.js:29:45
bindActionCreator/<@resource://devtools/client/shared/vendor/redux.js:644:12
threadListChanged@resource://devtools/client/debugger/src/client/firefox/events.js:106:11
setupEvents/<@resource://devtools/client/debugger/src/client/firefox/events.js:42:75
emit@resource://devtools/shared/event-emitter.js:190:24
emit@resource://devtools/shared/event-emitter.js:271:18
onPacket@resource://devtools/shared/protocol/Front.js:270:13
onPacket@resource://devtools/shared/client/debugger-client.js:583:13
_onJSONObjectReady/<@resource://devtools/shared/transport/transport.js:464:22
exports.makeInfallible/<@resource://devtools/shared/ThreadSafeDevToolsUtils.js:111:22
DevToolsUtils.executeSoon*exports.executeSoon@resource://devtools/shared/DevToolsUtils.js:62:21
_onJSONObjectReady@resource://devtools/shared/transport/transport.js:460:19
JSONPacket.prototype.read@resource://devtools/shared/transport/packets.js:187:19
_processIncoming@resource://devtools/shared/transport/transport.js:386:24
DebuggerTransport.prototype.onInputStreamReady<@resource://devtools/shared/transport/transport.js:332:14
exports.makeInfallible/<@resource://devtools/shared/ThreadSafeDevToolsUtils.js:111:22
So the debugger detects a change in threads (threadListChanged
) and try to get a target from a descriptor while the connection is being closed (devtools/client/debugger/src/client/firefox/targets.js#86 ).
Brian, would you have an idea on how to fix that?
Comment 9•5 years ago
|
||
This isn't permafailing anymore: https://treeherder.mozilla.org/#/jobs?repo=autoland&fromchange=2b10a397e32f3d3b48c66a0b29e009e17fe5d07e&searchStr=linux%2Cx64%2Cdebug%2Cmochitests%2Ctest-linux64%2Fdebug-mochitest-devtools-chrome-e10s&tochange=36406d4fb1a676b071b5147d8048ecc4f8a72022&group_state=expanded&selectedJob=274568638
Should we reopen Bug 1592680, or modify this bug's summary to intermittent?
Assignee | ||
Comment 10•5 years ago
|
||
we can modify this bug's summary, since we did some investigation here.
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 13•5 years ago
|
||
Comment 14•5 years ago
|
||
I've made a disable for the tier 1 jobs where this test fails, meaning macos debug and linux debug.
On windows ccov and linux ccov the test is permafailing:
Should we disable it on windows ccov as well, or do you want the code coverage for that?
Comment 15•5 years ago
|
||
(In reply to Nicolas Chevobbe [:nchevobbe] from comment #8)
Here's a failure that happens on the test:
...
So the debugger detects a change in threads (
threadListChanged
) and try to get a target from a descriptor while the connection is being closed (devtools/client/debugger/src/client/firefox/targets.js#86 ).Brian, would you have an idea on how to fix that?
Hmm, I'm not sure this message would cause the test itself to timeout, and I see timeouts on treeherder that don't include this message. I've tried reproducing this locally on both opt and debug builds without success. Disabling it on affected platforms seems good for now until we can get more of an idea what is causing the timeouts.
Comment hidden (Intermittent Failures Robot) |
Updated•5 years ago
|
Comment 17•5 years ago
|
||
Updated•5 years ago
|
Comment 18•5 years ago
|
||
bugherder |
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Updated•5 years ago
|
Updated•5 years ago
|
Comment 34•5 years ago
|
||
Comment 35•5 years ago
|
||
bugherder |
Comment hidden (Intermittent Failures Robot) |
Comment 37•5 years ago
|
||
This has:
- 27 total failures in the last 7 days: https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?startday=2020-02-15&endday=2020-02-22&tree=trunk&bug=1591590
- 44 total failures in the last 30 days: https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?startday=2020-01-23&endday=2020-02-22&tree=trunk&bug=1591590
Most of the failures are on windows10-64 debug (last 7 days). Test is skipped on asan || (os == 'mac' && debug) || (os == 'linux' && debug) || ccov
Nicholas, any chance to have a fix for this test in the near future?
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 39•5 years ago
|
||
So when it fails it looks like the browser toolbox is in a weird state.
I'm seeing that from time to time.
Comment hidden (Intermittent Failures Robot) |
Comment 41•5 years ago
|
||
There are 29 failures associated to this bug in the last 7 days. These are occurring on windows10-64 debug builds.
recent log: https://treeherder.mozilla.org/logviewer.html#?job_id=290546350&repo=autoland
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment 43•5 years ago
|
||
Nicolas can you assign someone to take a look?
Assignee | ||
Comment 44•5 years ago
|
||
I'm looking into it
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 47•5 years ago
|
||
Hi Nicolas, are there any updates here?
There are 56 total failures in the last 7 days on
- windows7-32 debug
- windows10-6 debug
Recent failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=294275218&repo=autoland&lineNumber=37121
[task 2020-03-22T22:44:06.325Z] 22:44:06 INFO - TEST-START | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js
[task 2020-03-22T22:44:06.343Z] 22:44:06 INFO - GECKO(5868) | [Parent 5740, Main Thread] WARNING: NS_ENSURE_TRUE(GetWrapper()) failed: file /builds/worker/checkouts/gecko/dom/ipc/JSWindowActor.cpp, line 66
[task 2020-03-22T22:44:06.363Z] 22:44:06 INFO - GECKO(5868) | [Child 10708: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 0000019C0FCE7800 == 2 [pid = 10708] [id = {a1d126ca-0173-4d4a-a395-a26cb49e943f}]
[task 2020-03-22T22:44:06.365Z] 22:44:06 INFO - GECKO(5868) | [Child 10708: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 3 (0000019C16278430) [pid = 10708] [serial = 55] [outer = 0000000000000000]
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - TEST-PASS | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | Has session state -
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - Buffered messages logged at 22:44:26
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2020-03-22T22:50:06.465Z] 22:50:06 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Console message: [JavaScript Warning: "Use of nsIFile in content process is deprecated." {file: "resource://gre/modules/NetUtil.jsm" line: 253}]
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Buffered messages logged at 22:45:36
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Longer timeout required, waiting longer... Remaining timeouts: 3
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Buffered messages logged at 22:47:06
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Longer timeout required, waiting longer... Remaining timeouts: 2
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Buffered messages logged at 22:48:36
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Longer timeout required, waiting longer... Remaining timeouts: 1
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - Buffered messages finished
[task 2020-03-22T22:50:06.466Z] 22:50:06 INFO - TEST-UNEXPECTED-FAIL | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | Test timed out -
[task 2020-03-22T22:50:06.467Z] 22:50:06 INFO - Removing tab.
[task 2020-03-22T22:50:06.467Z] 22:50:06 INFO - Waiting for event: 'TabClose' on [object XULElement].
[task 2020-03-22T22:50:06.467Z] 22:50:06 INFO - Got event: 'TabClose' on [object XULElement].
[task 2020-03-22T22:50:06.467Z] 22:50:06 INFO - Tab removed and finished closing
[task 2020-03-22T22:50:06.472Z] 22:50:06 INFO - TEST-PASS | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | The main process DevToolsServer has no pending connection when the test ends -
[task 2020-03-22T22:50:06.532Z] 22:50:06 INFO - GECKO(5868) | MEMORY STAT | vsize 2104838MB | vsizeMaxContiguous 65492155MB | residentFast 672MB | heapAllocated 265MB
[task 2020-03-22T22:50:06.534Z] 22:50:06 INFO - TEST-OK | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | took 360210ms
Comment hidden (Intermittent Failures Robot) |
Comment 49•5 years ago
|
||
Bug 1625181 got backed out for ostensibly turning this into a permafail, but I don't see any direct connection between the two. Perhaps bug 1625181 changed startup timing in a way that uncovered an existing race in this test?
Comment 50•5 years ago
|
||
In the last 7 days there are 23 failures: https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?startday=2020-03-29&endday=2020-04-05&tree=trunk&bug=1591590
And indeed was backed out https://hg.mozilla.org/integration/autoland/rev/f509247a91c920cca951aaf53cbf3dbb8f329b4b
Comment 51•5 years ago
|
||
The new failures all appear to be on windows debug builds and this test is already disabled for being too flaky on linux and mac debug.
I really don't see any plausible connection to bug 1625181. Nicolas, can we just disable this test on all debug builds until the devtools team has a chance to study the failures?
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 53•5 years ago
|
||
(In reply to Andrew Swan [:aswan] from comment #51)
The new failures all appear to be on windows debug builds and this test is already disabled for being too flaky on linux and mac debug.
I really don't see any plausible connection to bug 1625181. Nicolas, can we just disable this test on all debug builds until the devtools team has a chance to study the failures?
sure, let's do that
Comment 54•5 years ago
|
||
Updated•5 years ago
|
Comment 55•5 years ago
|
||
Comment 56•5 years ago
|
||
bugherder |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 59•5 years ago
|
||
Recent failures here are mozilla-beta, should the test be disabled there too?
Assignee | ||
Comment 60•5 years ago
|
||
(In reply to Andreea Pavel [:apavel] from comment #59)
Recent failures here are mozilla-beta, should the test be disabled there too?
let's do that
Comment 61•5 years ago
|
||
bugherder uplift |
Updated•5 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 72•4 years ago
|
||
Update:
There have been 31 failures within the last 7 days:
- 10 failures on Windows 10 x64 Shippable opt
- 21 failures on Windows 10 x64 opt
Recent failure log: https://treeherder.mozilla.org/logviewer?job_id=339769933&repo=autoland&lineNumber=84483
[task 2021-05-15T04:41:43.455Z] 04:41:43 INFO - TEST-PASS | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | Connected -
[task 2021-05-15T04:41:43.456Z] 04:41:43 INFO - Console message: [JavaScript Warning: "The Web Console logging API (console.log, console.info, console.warn, console.error) has been disabled by a script on this page."]
[task 2021-05-15T04:41:43.456Z] 04:41:43 INFO - Buffered messages logged at 04:39:28
[task 2021-05-15T04:41:43.456Z] 04:41:43 INFO - Longer timeout required, waiting longer... Remaining timeouts: 3
[task 2021-05-15T04:41:43.457Z] 04:41:43 INFO - Buffered messages logged at 04:40:13
[task 2021-05-15T04:41:43.457Z] 04:41:43 INFO - Longer timeout required, waiting longer... Remaining timeouts: 2
[task 2021-05-15T04:41:43.457Z] 04:41:43 INFO - Buffered messages logged at 04:40:58
[task 2021-05-15T04:41:43.458Z] 04:41:43 INFO - Longer timeout required, waiting longer... Remaining timeouts: 1
[task 2021-05-15T04:41:43.458Z] 04:41:43 INFO - Buffered messages finished
[task 2021-05-15T04:41:43.458Z] 04:41:43 INFO - TEST-UNEXPECTED-FAIL | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | Test timed out -
[task 2021-05-15T04:41:43.459Z] 04:41:43 INFO - Removing tab.
[task 2021-05-15T04:41:43.459Z] 04:41:43 INFO - Waiting for event: 'TabClose' on [object XULElement].
[task 2021-05-15T04:41:43.459Z] 04:41:43 INFO - Got event: 'TabClose' on [object XULElement].
[task 2021-05-15T04:41:43.460Z] 04:41:43 INFO - Tab removed and finished closing
[task 2021-05-15T04:41:43.460Z] 04:41:43 INFO - TEST-PASS | devtools/client/webconsole/test/browser/browser_toolbox_console_new_process.js | The main process DevToolsServer has no pending connection when the test ends -
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Updated•4 years ago
|
Comment 75•4 years ago
|
||
Comment 76•4 years ago
|
||
Comment 77•4 years ago
|
||
bugherder |
Comment hidden (Intermittent Failures Robot) |
Updated•4 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Updated•3 years ago
|
Updated•2 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Updated•1 year ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Updated•9 months ago
|
Comment hidden (Intermittent Failures Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 105•2 months ago
|
||
https://wiki.mozilla.org/Bug_Triage#Intermittent_Test_Failure_Cleanup
For more information, please visit BugBot documentation.
Updated•2 months ago
|
Description
•