[MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
--------------------+------------------------
 Reporter:  mf2k    |      Owner:  reneeotten
     Type:  defect  |     Status:  assigned
 Priority:  Normal  |  Milestone:
Component:  ports   |    Version:
 Keywords:          |       Port:  py-spyder
--------------------+------------------------
 I have installed:
 {{{
 $ port installed py36-spyder
 The following ports are currently installed:
   py36-spyder @3.3.1_0 (active)
 }}}

 In Terminal, I see the following error messages constantly being
 displayed:
 {{{
 $ spyder
 AVDCreateGPUAccelerator: Error loading GPU renderer
 [59622:68355:1003/100904.709460:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [59622:68355:1003/100904.709511:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [59622:68355:1003/100904.710892:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [59622:68355:1003/100904.710983:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [59622:68355:1003/100904.711914:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [59622:68355:1003/100904.711939:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [59622:68355:1003/100904.712510:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 ...
 }}}

--
Ticket URL: <https://trac.macports.org/ticket/57232>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 hi Frank,

 sorry for the trouble, but I am afraid that I cannot reproduce it... A
 quick Google search suggests that it has likely to do with Qt /
 QtWebEngine. What versions for ports related to Qt have you installed and
 which OS are you on?

 {{{$ port installed py36-pyqt5 py36-qtpy qt5-* }}}

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 {{{
 $ port installed py36-pyqt5 py36-qtpy qt5-*
 The following ports are currently installed:
   py36-pyqt5 @5.11.2_0+webengine (active)
   py36-qtpy @1.5.1_0+qt5 (active)
   qt5-qt3d @5.11.1_0 (active)
   qt5-qtbase @5.11.1_0+openssl (active)
   qt5-qtcanvas3d @5.11.1_0 (active)
   qt5-qtconnectivity @5.11.1_0 (active)
   qt5-qtdeclarative @5.11.1_0 (active)
   qt5-qtgamepad @5.11.1_0 (active)
   qt5-qtgraphicaleffects @5.11.1_0 (active)
   qt5-qtimageformats @5.11.1_0 (active)
   qt5-qtlocation @5.11.1_0 (active)
   qt5-qtmacextras @5.11.1_0 (active)
   qt5-qtmultimedia @5.11.1_0 (active)
   qt5-qtnetworkauth @5.11.1_0 (active)
   qt5-qtquickcontrols @5.11.1_0 (active)
   qt5-qtquickcontrols2 @5.11.1_0 (active)
   qt5-qtscript @5.11.1_0 (active)
   qt5-qtscxml @5.11.1_0 (active)
   qt5-qtsensors @5.11.1_0 (active)
   qt5-qtserialbus @5.11.1_0 (active)
   qt5-qtserialport @5.11.1_0 (active)
   qt5-qtspeech @5.11.1_0 (active)
   qt5-qtsvg @5.11.1_0 (active)
   qt5-qttools @5.11.1_0 (active)
   qt5-qttranslations @5.11.1_0 (active)
   qt5-qtwebchannel @5.11.1_0 (active)
   qt5-qtwebengine @5.11.1_0 (active)
   qt5-qtwebkit @5.9.1_2 (active)
   qt5-qtwebsockets @5.11.1_0 (active)
   qt5-qtxmlpatterns @5.11.1_0 (active)
   qt5-sqlite-plugin @5.11.1_0 (active)
 }}}

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 I'm seeing this on High Sierra.

 I didn't think I had a choice of versions for Qt5.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:3>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 Also using Xcode 10.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:4>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 I have the same ports installed, also using High Sierra. I have upgrade my
 XCode to 10 as well, but the ports were installed before that; did this
 happen for you with a new compilation from source after installing XCode
 10? In other words, when did it start? I will try to reinstall later today
 and see if I can reproduce the problem.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:5>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 I don't remember to be honest. I often uninstall all of my ports and start
 over, but I don't remember the last time I did that. So it could be either
 way for me. :)

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:6>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 Part of the difficulty in reproducing this issue is that the buildbot for
 High Sierra uses Xcode 9. So I likely have a mix of ports built with Xcode
 9 and Xcode 10.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:7>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 I tried to re-install all qt related ports with Xcode 10, but
 {{{qt5-qtwebengine}}} fails... (potentially related to
 [https://trac.macports.org/ticket/57193 this ticket]?). So I cannot test
 right now whether the issue is caused by Xcode or not. Do you see the same
 with {{{py-spyder-devel}}}?

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:8>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 Yes, I see the same issue with `py-spyder-devel`.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:9>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 I must say that I don't know where to look... I can still not reproduce
 the issue and see no reports on the Spyder GitHub. All Google-search
 suggest its in Qt5/Qt5Webengine, and likely related to the graphic
 card/driver.

 One more thing that is perhaps worth trying is to do {{{export
 SPYDER_DEBUG=3}}} before starting {{{spyder}}}. That will print debug
 messages in the terminal, perhaps that gives a clue on what starts the
 stream of error messages. Just out of curiosity, does spyder actually
 start/work correctly besides the messages?

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:10>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 Yes, it does work. But if I keep it running for a long time, it takes a
 while to quit, probably because of the enormous log file generated.

 Here is the debug output:
 {{{
 $ export SPYDER_DEBUG=3
 $ spyder
 Start of MainWindow constructor
 End of MainWindow constructor
 *** Start of MainWindow setup ***
   ..core actions
   ..toolbars
   ..tools
   ..sift?
   ..plugin: internal console
     ..internal console: initializing
   ..plugin: working directory
 Loading help...
 AVDCreateGPUAccelerator: Error loading GPU renderer
 Loading outline explorer...
 Loading editor...
 Introspection Plugin Loaded: rope
 Introspection Plugin Loaded: jedi
 Introspection Plugin Loaded: fallback
 setfocusto: <spyder.widgets.sourcecode.codeeditor.CodeEditor object at
 0x126f031f8>
 current_changed: 0 <spyder.widgets.sourcecode.codeeditor.CodeEditor object
 at 0x126f031f8> 4948242936
 Added thread <spyder.widgets.editor.AnalysisThread object at 0x126f16168>
 to queue
 Added thread <spyder.widgets.editor.AnalysisThread object at 0x126f16288>
 to queue
 Updating queue:
     started: 0
     pending: 2
 ===>starting: <spyder.widgets.editor.AnalysisThread object at 0x126f16168>
 Updating queue:
     started: 1
     pending: 1
 ===>starting: <spyder.widgets.editor.AnalysisThread object at 0x126f16288>
   ..widgets
 Loading file explorer...
 Updating queue:
     started: 1
     pending: 0
 Loading history plugin...
 Loading online help...
 Updating queue:
     started: 0
     pending: 0
 Loading project explorer...
 [46939:73475:1005/075117.159423:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [46939:73475:1005/075117.159471:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [46939:73475:1005/075117.161634:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [46939:73475:1005/075117.161658:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [46939:73475:1005/075117.162557:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [46939:73475:1005/075117.162583:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 [46939:73475:1005/075117.163410:ERROR:gl_context_cgl.cc(136)] Error
 creating context.
 [46939:73475:1005/075117.163435:ERROR:gles2_command_buffer_stub.cc(263)]
 ContextResult::kFatalFailure: Failed to create shared context for
 virtualization.
 ...
 }}}

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:11>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 This part stands out:
 {{{
 AVDCreateGPUAccelerator: Error loading GPU renderer
 }}}

 Does that happen for you?

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:12>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 no, I don't see any of these messages. In your case that starts after
 {{{Loading help...}}}, we can try and check if that does anything to
 trigger the error... Out of curiosity what is your graphics card (mine
 says "Intel Iris Graphics 6100 1536 MB). Oh, now I think of it: did you
 remove the .spyder3-36 in your home directory and tried again, just in
 case there is some weird configuration setting?

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:13>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 My graphics card is "AMD FirePro D300 2048 MB". This is the latest Mac
 Pro.

 I removed all of the .spyder but it didn't help.

 I also tried removing all of my ports and reinstalled it from scratch.
 Same problem.

 This is a recent problem for me. Possibly coinciding with the upgrade to
 Xcode 10, but I'm not certain.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:14>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 I was trying to do a complete rebuild from source but I am stuck at
 #57193.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:15>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------
Changes (by mf2k):

 * cc: MarcusCalhoun-Lopez (added)


Comment:

 This issue appears to be coming from qt5 and it is in the Chromium code.
 Cc'ing qt5 maintainer for possible comment.

 {{{
 $ pwd
 /opt/local/var/macports/build/_opt_local_var_macports_sources_github
 .com_macports_macports-ports_aqua_qt5/qt5-qtwebengine/work/qtwebengine-
 everywhere-src-5.11.2/src/3rdparty/chromium/gpu/ipc/service
 $ ls -l gles2_command_buffer_stub.cc
 -rw-r--r--  1 macports  admin  18152 Aug 27 02:21
 gles2_command_buffer_stub.cc
 }}}

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:16>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 See [https://github.com/rstudio/rstudio/pull/3149/files this link] for
 what another project did to solve this.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:17>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by reneeotten):

 hi Frank,

 I just upgrade to Mojave, reinstalled my ports and all still works as
 intended. The issue is clearly with the graphics card and as you said
 likely with the qt5 code.

 I just opened a PR that updates spyder-devel to its latest version. When
 looking into that I noticed there is a command line option called {{{
 --opengl {software,desktop,gles} OpenGL implementation to pass to Qt}}}.
 Spyder has changed their default now to "software". Perhaps you could try
 these different options and see if that helps (of note, this flag is not
 present in Spyder 3.3.1)?

 Another suggestion is to try and disable the gpu hardware acceleration,
 from this [https://doc.qt.io/qt-5.11/qtwebengine-debugging.html#using-
 command-line-arguments link] it suggest one can do that by using the
 environment variable {{{QTWEBENGINE_CHROMIUM_FLAGS}}}.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:18>
MacPorts <https://www.macports.org/>
Ports system for macOS
Reply | Threaded
Open this post in threaded view
|

Re: [MacPorts] #57232: py-spyder: Streams endless error messages to Terminal when run

MacPorts
In reply to this post by MacPorts
#57232: py-spyder: Streams endless error messages to Terminal when run
------------------------+------------------------
  Reporter:  mf2k       |      Owner:  reneeotten
      Type:  defect     |     Status:  assigned
  Priority:  Normal     |  Milestone:
 Component:  ports      |    Version:
Resolution:             |   Keywords:
      Port:  py-spyder  |
------------------------+------------------------

Comment (by mf2k):

 I installed py36-spyder-devel and the problem is gone now. Thank you! I
 suppose we can close this ticket when the fix makes it to py-spyder.

--
Ticket URL: <https://trac.macports.org/ticket/57232#comment:19>
MacPorts <https://www.macports.org/>
Ports system for macOS
12