# Google SoC lwIP Report Week 11

DevFeed: [Google SoC lwIP Report Week 11](<https://devfeed.tech/articles/google-soc-lwip-report-week-11-32786.md>)

Original publisher: [Read original article](<https://reactos.org/blogs/google-soc-lwip-report-week-11/>)

Published: 2016-08-08T00:00:00Z

Content type: opinion

Language: en

Sources: [Front Page on ReactOS Website](<https://devfeed.tech/sources/front-page-on-reactos-website.md>)

Topics: [lwIP](<https://devfeed.tech/topics/lwip.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [test](<https://devfeed.tech/topics/test.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [free](<https://devfeed.tech/tags/free.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [lwip](<https://devfeed.tech/tags/lwip.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [os](<https://devfeed.tech/tags/os.md>), [react](<https://devfeed.tech/tags/react.md>), [reactos](<https://devfeed.tech/tags/reactos.md>), [tcp](<https://devfeed.tech/tags/tcp.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [threads](<https://devfeed.tech/tags/threads.md>), [win32](<https://devfeed.tech/tags/win32.md>), [winapi](<https://devfeed.tech/tags/winapi.md>)

## AI overview

A week 11 development report describing efforts to address thread-safety problems in lwIP and the author's TCP_CONTEXT structures. The author used mutexes to serialize access and modified semaphore behavior so that lwIP threads could not run concurrently.

## Source excerpt

This past week, I have primarily focused on thread-safety. Three weeks ago, I discovered that lwIP's core code is not thread-safe. When left unmodified, each lwIP thread will access several unprotected global linked lists as well as use a set of global variables to process any and all incoming packets. One option to solve this problem was to modify the core code so the global data was protected from concurrent access.