Bug 484173 - Kile crashes in EditorExtension::isBracketPosition, textline[col]
Summary: Kile crashes in EditorExtension::isBracketPosition, textline[col]
Status: RESOLVED FIXED
Alias: None
Product: kile
Classification: Applications
Component: general (other bugs)
Version First Reported In: master
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Natalie Clarius
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2024-03-21 15:38 UTC by Natalie Clarius
Modified: 2024-03-31 05:54 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Natalie Clarius 2024-03-21 15:38:26 UTC
Application: kile (2.9.95)
 (Compiled from sources)
Qt Version: 6.6.2
Frameworks Version: 6.1.0
Operating System: Linux 6.7.9-arch1-1 x86_64
Windowing System: X11
Distribution: "Arch Linux"
DrKonqi: 6.0.80 [CoredumpBackend]

-- Information about the crash:
Steps to reproduce: Right-click on the end of a line in the editor

In src/editorextension.cpp:2004:
textline[col] crashes because col == textline.length()

The crash can be reproduced every time.

-- Backtrace:
Application: Kile (kile), signal: Aborted
Content of s_kcrashErrorMessage: std::unique_ptr<char []> = {get() = 0x0}
[New LWP 133315]
[New LWP 133320]
[New LWP 133321]
[New LWP 133319]
[New LWP 133322]
[New LWP 133327]
[New LWP 133328]
[New LWP 133331]
[New LWP 133417]
[New LWP 133418]
[New LWP 133329]
[New LWP 133330]
[New LWP 133332]
[New LWP 133338]
[New LWP 133413]
[New LWP 133416]

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) [answered N; input not from terminal]
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/home/natalie/kde/usr/bin/kile anaphoric_form_ic.tex'.
Program terminated with signal SIGABRT, Aborted.
#0  0x00007d1dfb8ab32c in ?? () from /usr/lib/libc.so.6
[Current thread is 1 (Thread 0x7d1df5b61a00 (LWP 133315))]

Cannot QML trace cores :(
[Current thread is 1 (Thread 0x7d1df5b61a00 (LWP 133315))]

Thread 16 (Thread 0x7d1dcbe006c0 (LWP 133416)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 15 (Thread 0x7d1dd50006c0 (LWP 133413)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 14 (Thread 0x7d1dd60006c0 (LWP 133338)):
#0  0x00007d1dfb919616 in ppoll () at /usr/lib/libc.so.6
#1  0x00007d1dfac98f6b in qt_safe_poll(pollfd*, unsigned long, timespec const*) () at /usr/lib/libQt6Core.so.6
#2  0x00007d1dfc35c758 in ??? () at /usr/lib/libQt6Network.so.6
#3  0x00007d1dfc3071b9 in ??? () at /usr/lib/libQt6Network.so.6
#4  0x00007d1dfc2ff18e in QAbstractSocket::waitForReadyRead(int) () at /usr/lib/libQt6Network.so.6
#5  0x00007d1dfd84ca60 in KIO::ConnectionBackend::waitForIncomingTask (this=0x7d1da8001f90, ms=-1) at /home/natalie/kde/src/kio/src/core/connectionbackend.cpp:154
#6  0x00007d1dfd85159c in KIO::Connection::waitForIncomingTask (this=0x7d1da80014b0, ms=-1) at /home/natalie/kde/src/kio/src/core/connection.cpp:201
#7  0x00007d1dfd8d5952 in KIO::SlaveBase::dispatchLoop (this=0x7d1da8001430) at /home/natalie/kde/src/kio/src/core/slavebase.cpp:340
#8  0x00007d1dfd9efcfb in KIO::WorkerThread::run (this=0x555a5c5d9f10) at /home/natalie/kde/src/kio/src/core/workerthread.cpp:47
#9  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#10 0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#11 0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 13 (Thread 0x7d1dd6a006c0 (LWP 133332)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 12 (Thread 0x7d1dd7e006c0 (LWP 133330)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 11 (Thread 0x7d1ddce006c0 (LWP 133329)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 10 (Thread 0x7d1dcaa006c0 (LWP 133418)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 9 (Thread 0x7d1dcb4006c0 (LWP 133417)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 8 (Thread 0x7d1dd74006c0 (LWP 133331)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8a65 in pthread_cond_timedwait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3ba4 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x00007d1dfaca64aa in ??? () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 7 (Thread 0x7d1ddde006c0 (LWP 133328)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8750 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3c10 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x0000555a5a11c89f in KileParser::ParserThread::run (this=0x555a5aaf0060) at /home/natalie/kde/src/kile/src/parser/parserthread.cpp:155
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 6 (Thread 0x7d1dde8006c0 (LWP 133327)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8750 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00007d1dfaca3c10 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib/libQt6Core.so.6
#3  0x0000555a5a11c89f in KileParser::ParserThread::run (this=0x555a5ab31b60) at /home/natalie/kde/src/kile/src/parser/parserthread.cpp:155
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 5 (Thread 0x7d1ddf2006c0 (LWP 133322)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8750 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00007d1deca8685c in ??? () at /usr/lib/dri/iris_dri.so
#3  0x00007d1deca9e80c in ??? () at /usr/lib/dri/iris_dri.so
#4  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#5  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 4 (Thread 0x7d1df50006c0 (LWP 133319)):
#0  0x00007d1dfb9190bf in poll () at /usr/lib/libc.so.6
#1  0x00007d1df936c2f6 in ??? () at /usr/lib/libglib-2.0.so.0
#2  0x00007d1df930c162 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#3  0x00007d1dfad739c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#4  0x00007d1dfab43d6e in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfac2106f in QThread::exec() () at /usr/lib/libQt6Core.so.6
#6  0x00007d1dfc7f59df in ??? () at /usr/lib/libQt6DBus.so.6
#7  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#8  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#9  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 3 (Thread 0x7d1ddfc006c0 (LWP 133321)):
#0  0x00007d1dfb8a5ebe in ??? () at /usr/lib/libc.so.6
#1  0x00007d1dfb8a8750 in pthread_cond_wait () at /usr/lib/libc.so.6
#2  0x00007d1deca8685c in ??? () at /usr/lib/dri/iris_dri.so
#3  0x00007d1deca9e80c in ??? () at /usr/lib/dri/iris_dri.so
#4  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#5  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 2 (Thread 0x7d1defe006c0 (LWP 133320)):
#0  0x00007d1dfb9190bf in poll () at /usr/lib/libc.so.6
#1  0x00007d1dfa96b20b in ??? () at /usr/lib/libxcb.so.1
#2  0x00007d1dfa96cf3d in xcb_wait_for_event () at /usr/lib/libxcb.so.1
#3  0x00007d1df5555f4e in ??? () at /usr/lib/qt6/plugins/platforms/../../../libQt6XcbQpa.so.6
#4  0x00007d1dfaca0bd3 in ??? () at /usr/lib/libQt6Core.so.6
#5  0x00007d1dfb8a955a in ??? () at /usr/lib/libc.so.6
#6  0x00007d1dfb926a3c in ??? () at /usr/lib/libc.so.6

Thread 1 (Thread 0x7d1df5b61a00 (LWP 133315)):
[KCrash Handler]
#4  0x00007d1dfb8ab32c in ??? () at /usr/lib/libc.so.6
#5  0x00007d1dfb85a6c8 in raise () at /usr/lib/libc.so.6
#6  0x00007d1dfb8424b8 in abort () at /usr/lib/libc.so.6
#7  0x00007d1dfaa8a924 in ??? () at /usr/lib/libQt6Core.so.6
#8  0x00007d1dfaa8b135 in QMessageLogger::fatal(char const*, ...) const () at /usr/lib/libQt6Core.so.6
#9  0x00007d1dfaa89770 in qt_assert(char const*, char const*, int) () at /usr/lib/libQt6Core.so.6
#10 0x0000555a59e9e649 in QString::operator[] (this=0x7ffc715402c0, i=45) at /usr/include/qt6/QtCore/qstring.h:1192
#11 0x0000555a59fcefc1 in KileDocument::EditorExtension::isBracketPosition (this=0x555a5b12a7f0, doc=0x555a5cb78d40, row=0, col=45, bracket=...) at /home/natalie/kde/src/kile/src/editorextension.cpp:2005
#12 0x0000555a59fced95 in KileDocument::EditorExtension::findOpenBracket (this=0x555a5b12a7f0, doc=0x555a5cb78d40, row=0, col=45, bracket=...) at /home/natalie/kde/src/kile/src/editorextension.cpp:1944
#13 0x0000555a59fcecdf in KileDocument::EditorExtension::getTexgroup (this=0x555a5b12a7f0, inside=false, open=..., close=..., view=0x555a5dc5ecf0) at /home/natalie/kde/src/kile/src/editorextension.cpp:1917
#14 0x0000555a59fc8bd6 in KileDocument::EditorExtension::getMathgroup (this=0x555a5b12a7f0, view=0x555a5dc5ecf0, row1=@0x7ffc71540560: 1549144624, col1=@0x7ffc71540564: 21850, row2=@0x7ffc71540568: -1605818624, col2=@0x7ffc7154056c: -1001043422) at /home/natalie/kde/src/kile/src/editorextension.cpp:495
#15 0x0000555a59fc8988 in KileDocument::EditorExtension::mathgroupRange (this=0x555a5b12a7f0, view=0x555a5dc5ecf0) at /home/natalie/kde/src/kile/src/editorextension.cpp:467
#16 0x0000555a59fc86e2 in KileDocument::EditorExtension::hasMathgroup (this=0x555a5b12a7f0, view=0x555a5dc5ecf0) at /home/natalie/kde/src/kile/src/editorextension.cpp:429
#17 0x0000555a5a0de362 in KileView::Manager::onTextEditorPopupMenuRequest (this=0x555a5aabc2e0) at /home/natalie/kde/src/kile/src/kileviewmanager.cpp:855
#18 0x0000555a5a04c53c in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KileView::Manager::*)()>::call(void (KileView::Manager::*)(), KileView::Manager*, void**) (f=(void (KileView::Manager::*)(KileView::Manager * const)) 0x555a5a0de250 <KileView::Manager::onTextEditorPopupMenuRequest()>, o=0x555a5aabc2e0, arg=0x7ffc715407f8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:145
#19 0x0000555a5a049fa4 in QtPrivate::FunctionPointer<void (KileView::Manager::*)()>::call<QtPrivate::List<>, void>(void (KileView::Manager::*)(), KileView::Manager*, void**) (f=(void (KileView::Manager::*)(KileView::Manager * const)) 0x555a5a0de250 <KileView::Manager::onTextEditorPopupMenuRequest()>, o=0x555a5aabc2e0, arg=0x7ffc715407f8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:182
#20 0x0000555a5a046041 in QtPrivate::QCallableObject<void (KileView::Manager::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x555a5e6f1170, r=0x555a5aabc2e0, a=0x7ffc715407f8, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:520
#21 0x00007d1dfab90ca9 in ??? () at /usr/lib/libQt6Core.so.6
#22 0x00007d1dfbcb6545 in ??? () at /usr/lib/libQt6Widgets.so.6
#23 0x00007d1dfbcb72f2 in QMenu::popup(QPoint const&, QAction*) () at /usr/lib/libQt6Widgets.so.6
#24 0x00007d1dfe91c917 in KateViewInternal::contextMenuEvent (this=0x555a5dee1030, e=0x7ffc71540d80) at /home/natalie/kde/src/ktexteditor/src/view/kateviewinternal.cpp:3394
#25 0x00007d1dfbb452cf in QWidget::event(QEvent*) () at /usr/lib/libQt6Widgets.so.6
#26 0x00007d1dfbaf438b in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#27 0x00007d1dfbaf7bb6 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#28 0x00007d1dfab39818 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6
#29 0x00007d1dfbb57b96 in ??? () at /usr/lib/libQt6Widgets.so.6
#30 0x00007d1dfbb58db0 in ??? () at /usr/lib/libQt6Widgets.so.6
#31 0x00007d1dfbaf438b in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt6Widgets.so.6
#32 0x00007d1dfab39818 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt6Core.so.6
#33 0x00007d1dfb16f9e5 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/libQt6Gui.so.6
#34 0x00007d1dfb1da85c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Gui.so.6
#35 0x00007d1df5556bdf in ??? () at /usr/lib/qt6/plugins/platforms/../../../libQt6XcbQpa.so.6
#36 0x00007d1df930df69 in ??? () at /usr/lib/libglib-2.0.so.0
#37 0x00007d1df936c3a7 in ??? () at /usr/lib/libglib-2.0.so.0
#38 0x00007d1df930c162 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
#39 0x00007d1dfad739c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#40 0x00007d1dfab43d6e in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt6Core.so.6
#41 0x00007d1dfab3c2b8 in QCoreApplication::exec() () at /usr/lib/libQt6Core.so.6
#42 0x0000555a5a10453d in main (argc=2, argv=0x7ffc71541978) at /home/natalie/kde/src/kile/src/main.cpp:198

Reported using DrKonqi
Comment 1 Bug Janitor Service 2024-03-21 16:05:46 UTC
A possibly relevant merge request was started @ https://invent.kde.org/office/kile/-/merge_requests/82
Comment 2 Natalie Clarius 2024-03-24 19:44:43 UTC
Git commit f966b2fe0351d67bacfeadf71279c269eecbed4b by Natalie Clarius.
Committed on 24/03/2024 at 19:44.
Pushed by nclarius into branch 'fix-bracketpos-crash'.

editorextension: fix crash in finding bracket and dolloar pairs

When col is the end of the line, we can't do textline[col].

M  +24   -24   src/editorextension.cpp

https://invent.kde.org/office/kile/-/commit/f966b2fe0351d67bacfeadf71279c269eecbed4b
Comment 3 Michel Ludwig 2024-03-31 05:54:46 UTC
Git commit f951bedad5471a1dc2a3960e1ee2c3b7de44ce2e by Michel Ludwig, on behalf of Natalie Clarius.
Committed on 31/03/2024 at 05:54.
Pushed by mludwig into branch 'master'.

editorextension: fix crash in finding bracket and dollar pairs

When col is the end of the line, we can't do textline[col].

M  +8    -5    src/editorextension.cpp

https://invent.kde.org/office/kile/-/commit/f951bedad5471a1dc2a3960e1ee2c3b7de44ce2e